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

初始化8x8游戏棋盘时触发NullPointerException问题求助

解决Java棋盘初始化的NullPointerException问题

兄弟,我一眼就看出问题啦——你只声明了二维数组board,但根本没给它分配实际的内存空间!直接去给board[j][i]赋值,这不触发空指针才怪呢😅

问题根源

你现在的代码里只写了public char[][] board;,这只是告诉Java“我有个二维char数组叫board”,但Java并没有为它创建真正的数组对象,所以board此时是null。当你在构造方法里尝试访问board[j][i]时,自然就抛出NullPointerException了。

另外还有个小疏漏:你原来的循环条件是i < 7和j < 7,这只能遍历7行7列,和你想要的8x8棋盘不匹配哦。

修复后的代码

public char[][] board;

public Gameboard(boolean setup) {
    // 先初始化8x8的二维数组,分配内存空间
    board = new char[8][8];
    // 遍历每个位置,填充空位符号'-'
    for(int i = 0; i < 8; i++){
        for(int j = 0; j < 8; j++){
            board[i][j] = '-';
        }
    }
}

额外小提示

你原来的代码里用了board[j][i],这会把行和列的索引搞反(除非你是故意这么设计的)。通常我们习惯用board[i][j]表示第i行第j列的位置,这样逻辑更符合常规的棋盘布局认知。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:59:15