Kotlin中如何访问二维数组单个元素?GameOfLife开发求助
在Kotlin中访问二维数组元素的问题解决
问题分析
你用arrayOf(arrayOf(...))创建二维数组的方式是完全正确的,Kotlin支持array[index][index]这种Java式的访问语法。代码无法运行的问题不在数组创建本身,而是出在你的Board类定义上。
解决方法
首先检查你的Board类,确保它正确接收并暴露Array<Array<Int>>类型的属性:
正确的Board类定义
class Board(val board: Array<Array<Int>>)
这里用val声明的board属性默认是公开(public)的,外部可以直接访问。此时你的测试代码:
val board = Board( arrayOf( arrayOf(2, 2, 2), arrayOf(2, 2, 2), arrayOf(2, 2, 2) ) ) println(board.board[2][2]) // 会正常输出2
常见错误原因
- 属性类型不匹配:如果
Board类里的board属性被定义为List<List<Int>>而非Array<Array<Int>>,会导致类型编译错误——虽然List也支持[index][index]访问,但和你传入的数组类型不兼容。 - 属性私有:如果
Board类的board属性用private修饰,外部无法直接访问,会出现编译错误。
更简洁的二维数组创建方式
Kotlin提供了更简洁的二维数组初始化语法,适合创建固定大小的生命游戏棋盘:
// 创建3x3的棋盘,所有元素初始值为2 val boardArray = Array(3) { Array(3) { 2 } } val board = Board(boardArray) println(board.board[2][2]) // 同样正常工作
内容的提问来源于stack exchange,提问作者Maciej Pelc
相关产品推荐
相关产品推荐

