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

Kotlin使用ArrayList实现二维数组逻辑错误:井字棋输入位置后整列显示X

问题根因

你确实猜对了,问题出在棋盘ArrayList的初始化逻辑:

  • board.add(row) 代码的位置放错了,你把它放在了内层j循环内部,导致每创建一个行对象,就会往board中重复添加3次同一个行引用
  • 最终board的前3个元素(printBoard函数遍历的就是前3个元素)都是第一个外层循环创建的同一个row对象的引用,所以你修改任意一行的某一列位置,本质上都是修改同一个行对象的对应位置,表现出来就是整列都变成了X
  • 额外小问题:打印坐标的代码把y的输出写错成了x,还有continueGame一直为true,游戏不会自动结束,属于后续可优化的点
修正方案

仅调整初始化部分的代码位置即可解决核心问题:

var board = arrayListOf<ArrayList<String>>()

fun main(args: Array<String>) {
for (i in 0..2){
    val row = arrayListOf<String>()
    for (j in 0..2){
        row.add("")
    }
    // 内层循环填充完一行的3个空位后,再加到board中,每行只加一次
    board.add(row)
}
// 后续逻辑保持不变,可把打印坐标的代码println("x is $y")改成println("y is $y")修正提示错误

内容的提问来源于stack exchange,提问作者Set GFX

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:54:01