printBoard()中的boolean数组java.lang.NullPointerException

时间:2016-12-09 11:25:50

标签: java arrays nullpointerexception

这些方法应该询问数组的大小(没有错误),然后数组中的每个元素都应该为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();
}

2 个答案:

答案 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;
}

谢谢......我没有看到。现在我初始化阵列板。