2013-02-16 42 views
-1

雖然我試圖以創建測試方法的對象,我得到一個空指針異常。問題而創建測試方法的對象

這是構造函數的代碼;

public Board(int size) 
{ 
    setBoard(size); 
    for (int row = 0; row < size; row++) { 
     for (int col = 0; col < size; col++) { 
      board[row][col] = 'E'; 
     } 
    } 
} 

setBoard(int size)code;

public void setBoard(int size) 
{ 
    this.size = size; 
} 

我不斷嘗試,但沒有結果尚未...

提前感謝!

+5

您可以發佈完整的堆棧跟蹤?和方法的定義--' setBoard()'。它在哪裏? – 2013-02-16 15:14:29

+0

是的,它會很高興知道「setBoard(INT)」?試着先把它留下。只是爲了測試。你的代碼對我來說似乎是正確的包含在主杆 – user1511417 2013-02-16 15:17:13

+0

setBoard方法的代碼。 – Niconoid 2013-02-16 15:20:40

回答

0

領域boardnull。你的代碼更改爲:

public Board(int size) 
{ 
    setBoard(size); 
    board = new char[size][size]; // initializes the board field 
    for (int row = 0; row < size; row++) { 
     for (int col = 0; col < size; col++) { 
      board[row][col] = 'E'; 
     } 
    } 
} 

一個更好的版本是:在NPE

public Board(int size) 
{ 
    setBoard(size); 
    board = new char[size][size]; // initializes the board field 
    for (char[] row : board) { 
     Arrays.fill(row, 'E'); 
    } 
} 
0

一個可能的原因可能是您的boardchar陣列尚未初始化。

board = new char[size][size]; 

當你傳遞的大小在構造函數,你將無法確定數組的大小正確,當你在類級別聲明。因此你需要在構造函數中實例化它。