You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 15:02:04