我有一個類「Tetris」,其中一個實例變量是「board」。 「board」是Color對象的二維數組。創建一個俄羅斯方塊對象時,我調用一個方法來設置棋盤的尺寸,然後將所有顏色對象設置爲默認值,即Color.blue。二維數組上的空指針異常(Java)
public Tetris(int rows, int cols) {
this.rows = rows;
this.cols = cols;
reset(rows, cols);
}
public void reset(int rows, int cols) {
Color[][] board = new Color[rows][cols];
for(int i = 0; i<this.rows; i++) {
for(int j = 0; j<this.cols; j++) {
board[i][j] = DEFAULT_COLOR; // Color.blue; //DEFAULT-COLOR
}
}
}
不幸的是,當我運行的代碼(這顯然尚未發佈的全部),我上線一個空指針異常:
board[i][j] = DEFAULT_COLOR; // Color.blue; //DEFAULT-COLOR.
有什麼明顯錯誤與我我在做什麼?
與NPE無關,但在重置時,您應該傳入行/列或使用this.rows/this.cols,但不能同時使用。此外,Color []是在本地創建的,不會返回或設置爲實例字段。 – Thilo 2010-04-13 06:34:46
你有一個名爲board的班級成員嗎?如果是這樣,你的重置函數,正如喬恩所說的,不會初始化那個成員,因爲你的局部變量板覆蓋了從未初始化的類成員。 – Ernelli 2010-04-13 06:46:45