我正在尝试使用2D阵列将棋盘打印到控制台。出于测试目的,我试图简单地将电路板填充为“x”字符。但是,当我尝试使用以下内容填充数组时,我不断收到ArrayIndexOutOfBounds异常:
public void setupBoard(){
for (int i=0; i < height; i++){
for (int j=0; j < width; j++){
boardArray[i][j] = 'x';
}
}
}
错误显然发生在boardArray[i][j] = 'x';
一切似乎都井井有条,我不明白为什么这不起作用。
编辑:我有阵列填充,但现在我无法正确格式化打印。内容全部打印在一行上,而不是8x8平方的'x'字符。这就是我现在所拥有的:public void displayBoard(){
for (int k=0; k < boardArray.length; k++)
for (int l=0; l < boardArray[k].length; l++){
System.out.print(boardArray[k][l]);
}
System.out.println();
}
答案 0 :(得分:3)
嗯,大概是因为你还没有正确创建电路板。不幸的是,您没有向我们展示数组创建语句。 应该类似于:
char[][] boardArray = new char[height][width];
编辑:好的,现在是打印部分。您当前的代码是:
public void displayBoard(){
for (int k=0; k < boardArray.length; k++)
for (int l=0; l < boardArray[k].length; l++){
System.out.print(boardArray[k][l]);
}
System.out.println();
}
这相当于:
public void displayBoard() {
for (int k = 0; k < boardArray.length; k++) {
for (int l = 0; l < boardArray[k].length; l++) {
System.out.print(boardArray[k][l]);
}
}
System.out.println();
}
...所以你只是在外部循环结束后才调用println
。如果你只是将调用移到println
到内部循环之后,那就没关系了:
public void displayBoard() {
for (int k = 0; k < boardArray.length; k++) {
for (int l = 0; l < boardArray[k].length; l++) {
System.out.print(boardArray[k][l]);
}
System.out.println();
}
}
请注意,如果总是包含for循环,if
语句等大括号,那么这种事情会更清楚。