Kotlin编写for循环时索引变量无法正常使用该如何解决?
Kotlin创建填充随机数列表报错问题解答
原代码错误原因
- 列表类型不符合需求:
listOf<Int>()生成的是不可变列表,仅支持读取元素,不支持修改、增删元素,因此myList[i] = 随机数的赋值操作会直接报错 - 循环逻辑错误:初始化的
myList是空列表,for (i in myList)是遍历列表现有元素,空列表不会触发任何循环逻辑;同时这里的i是列表存储的元素值,并非你预期的索引下标,完全不能用作下标访问 - 长度不匹配:即使解决上述两个问题,空列表不存在对应索引位置,也无法完成赋值操作
现有可运行代码优化建议
你提供的可运行代码已经解决了核心问题,改用了mutableListOf生成可变列表,通过add()方法追加元素,但存在两个小问题可以调整:
- 你需要长度为10的列表,
0..10是前后闭合的区间,会循环11次生成11个元素,调整为0 until 10或者直接使用repeat(10)更符合需求 - 循环内重复声明
int变量属于冗余代码,无需额外定义中间变量,可以直接把生成的随机数添加到列表中
优化后的实现代码
// 写法1:手动循环实现,逻辑清晰易读 val myList = mutableListOf<Int>() repeat(10) { myList.add((1..100).random()) } // 写法2:Kotlin 惯用写法,直接生成目标列表,无需手动操作可变集合 val myList = List(10) { (1..100).random() }
内容的提问来源于stack exchange,提问作者Noccis
相关产品推荐
相关产品推荐

