初始化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
相关产品推荐
相关产品推荐

