我将二维数组定义如下
var row = 4
var col = 4
val myArray = Array(row) { IntArray(col) }
fun fillArray(myArray: Array<IntArray>) {
myArray.forEach {
it.forEach {
var random = (1..4).random()
myArray.set(i, random)
Log.i(TAG, random.toString())
}
}
}
我有两个问题
myArray.set(i, random)
**第一:**如何获得二维数组元素的当前索引“i”
**第二:**函数不接受随机生成的数字“random”。IDE说需要IntArray类型。我知道我生成了一个int类型的数组,但我想设置一个int类型的值,而不是IntArray类型的值,所以我不太明白我应该做什么。
如果我这样直接按索引访问值
numbers[0][0] = 3
一切都很好。但是如果我像上面显示的那样迭代它,我就不能为每个索引设置一个值。
2条答案
按热度按时间soat7uwm1#
既然你已经知道
numbers[0][0] = 3
的语法,就使用它吧。循环应该经过myArray
的indices
和每个内部数组的indices
。或者,如果您更喜欢
forEach
:注意不要在数组上使用
forEach
,这会覆盖数组的 elements,但是数组的原始元素对你没有任何用处,因为这样做的目的是用随机值填充数组。实际上,你也可以用随机值初始化数组,如下所示:
sulc1iza2#
这个调用不起作用的原因很明显,
myArray
的类型是Array<IntArray>
(所以它有点像Array<Array<Int>>
),所以,当期望IntArray
时,不能设置Integer
。要修复它(我使用命名参数使它更清楚),您需要使用
forEachIndexed
: