Kotlin中通过索引为二维数组赋值的问题
二维数组赋值问题的解决方案
你的代码里的两个问题可以通过调整遍历逻辑来解决,具体说明和修正如下:
问题拆解与解决
1. 获取元素的当前索引
普通的forEach仅能遍历元素,无法直接获取索引。要拿到二维数组的行、列索引,需使用forEachIndexed方法,它会同时提供索引值和当前遍历的元素两个参数。
2. 类型不匹配问题
myArray是Array<IntArray>类型(即存储IntArray的一维数组,对应二维int数组),myArray.set(i, value)要求传入的value必须是IntArray类型,但你传入的是单个Int值,因此触发类型错误。你实际要修改的是二维数组中的单个int元素,正确逻辑是:先获取某一行的IntArray,再给该行的指定列位置赋值。
修正后的完整代码
var row = 4 var col = 4 val myArray = Array(row) { IntArray(col) } fun fillArray(myArray: Array<IntArray>) { // 遍历行:rowIndex是行号,rowArray是当前行的IntArray myArray.forEachIndexed { rowIndex, rowArray -> // 遍历当前行的列:colIndex是列号,忽略原有元素用_占位 rowArray.forEachIndexed { colIndex, _ -> val random = (1..4).random() // 给当前行的当前列位置赋值 rowArray[colIndex] = random Log.i(TAG, random.toString()) } } }
简化写法补充
如果不需要单独的填充函数,也可以在初始化二维数组时直接完成随机值填充:
val myArray = Array(4) { IntArray(4) { (1..4).random() } }
内容的提问来源于stack exchange,提问作者lobster
相关产品推荐
相关产品推荐

