这些方法应该询问数组的大小(没有错误),然后数组中的每个元素都应该为false(没有错误),最后应该打印数组... 但我在第29行(它在代码中标出)
中得到一个例外我正在初始化数组,所以我真的不知道我的代码有什么问题。
private boolean[][] board; // true = queen, false = empty
[...]
private void determineBoardSize(){
write("Sprechen sie sich ab wer weiß und wer schwarz ist");
write("weiß muss eine Zahl zwischen 5 und 8 wählen");
nrRows = readInt("Zahl aus {5,6,7,8}");
if(nrRows < 5 || nrRows > 8) determineBoardSize();
write("Schwarz muss nun eine Zahl zwischen ErsteZahl -1 und ErsteZahl + 1 wählen");
nrColumns = readInt("eine Zahl zwischen ErsteZahl -1 und ErsteZahl + 1 wählen");
if(nrColumns < nrRows - 1 || nrColumns > nrRows + 1) determineBoardSize();
private void initBoard(){
boolean[][] board = new boolean[nrRows][nrColumns];
for(int i = 0; i < nrRows; i++){
for(int y = 0; y < nrColumns; y++){
board[i][y] = false;
}
}
}
private void printBoard(){
for (int j = board[0].length - 1; j >= 0; j--) { //java.lang.NullPointerException
System.out.print("\n " + (1 + j));
for (int i = 0; i < board.length; i++) {
System.out.print(board[i][j] ? " X" : " -");
}
}
System.out.print("\n ");
for (int i = 1; i <= board.length; i++) {
System.out.print(" " + i);
}
System.out.println("\n" + (whiteToMove ? white : black) + " ist am Zug.");
}
public void startGame(){
determineBoardSize();
initBoard();
determineFirstPlayer();
printBoard();
mainLoop();
reportWinner();
}
public static void main(String[] args) {
Dame ds = new Dame("Weiß", "Schwarz");
ds.startGame();
}
答案 0 :(得分:1)
在initBoard
中,您正在初始化新的电路板,而不是全局电路板,因此当方法返回时,board
仍然未初始化。
答案 1 :(得分:0)
private void initBoard(){
boolean[][] array = new boolean[nrRows][nrColumns];
for(int i = 0; i < nrRows; i++){
for(int y = 0; y < nrColumns; y++){
array[i][y] = false;
}
} board = array;
}
谢谢......我没有看到。现在我初始化阵列板。