2014-11-04 2 views
0

, 나는 희망을 당신이 나에게 도움이 될 수 있습니다열거 값을 double 배열 자바를 초기화 나는 약간의 문제가

을 나는 TOKEN라는 자바 클래스를 가지고 있으며이 안에 있습니다

public enum TOKEN { EMPTY, WHITE, BLACK } 

다른 클래스 (같은 패키지) 열 및 행 배열의 행렬을 만들려고 해요 및 다른 클래스 "TOKEN"에서 값 "EMPTY"로 초기화하려고 해요 :

NR 및 NC int 타입이며, I 코드를 실행하려고 할 때, 그것은 (제 1 반복)

보드 여기 중단하지만 (예 6,7의 경우)의 값이 [A] [B] = 토큰. 비켜.

누군가 나를 도와 드릴까요? 고맙습니다!

+0

? 정확히 어떻게됩니까? 제공 할 수있는 오류 메시지는 무엇입니까? –

답변

3

먼저 배열을 초기화 할 수 있습니다

board = new TOKEN[nr][nc]; 
2

당신은 board 변수를 초기화 할 필요가 첫번째 new TOKEN[nr][nc]를 사용하여 :

public class Board { 
    private final int row; 
    private final int column; 
    private final TOKEN[][] board; 

    public Board(int nr, int nc) { 
     this.row = nr; 
     this.column = nc; 
     // here we initialize the array, otherwise board will be null 
     board = new TOKEN[nr][nc]; 
     for (int a = 0; a < row; a++) { 
      for (int b = 0; b < column; b++) { 
       board[a][b] = TOKEN.EMPTY; 
      } 
     } 
    } 

    public static void main(String[] args) { 
     Board board = new Board(10, 10); 
    } 
} 
0

누락 초기화 :

... 
board = new TOKEN[row][column]; // <--- 
for(int a=0; a < row; a++) 
... 
0

당신의 생성자에서 Board 배열 firs를 초기화해야합니다. 당신이 빈 토큰으로 채우기 전에 t로서, NullPointerException :

public Board(int nr, int nc) { 
    board = new TOKEN[nr][nc]; // initializes the matrix with nr arrays of nc size 
    this.row = nr; 
    this.column = nc; 
    for (int a = 0; a < row; a++) { 
     for (int b = 0; b < column; b++) { 
      board[a][b] = TOKEN.EMPTY; 
     } 
    } 
} 
0

당신은 당신이 얻을 오류를 보류 할 수 있습니다. 배열을 초기화하는 것을 잊어 버렸기 때문에이 예외가 발생합니다.

public Board(int nr, int nc){  
    this.row = nr; 
    this.column = nc; 
    this.board = new TOKEN[nr][nc]; // <-- here 
    for(int a=0; a < row; a++) { 
     for(int b=0; b < column; b++) 
     board[a][b] = TOKEN.EMPTY; 
    }  
} 
관련 문제