2010-07-13 3 views
0

그래서이 애플릿 내가 만드는 중이하고 나는 그것이 수에 따라 세계를 발전기하려면 OK ...자바 -로드 다른지도

여기있다 :

public int[][] loadBoard(int map) { 
    if (map == 1) { int[][] board = { { 
2,2,24,24,24,24,24,3,3,0,0,0,1 }, 

{ 2,2,24,23,23,23,24,1,3,0,0,0,1 }, 

{ 1,1,24,23,23,23,24,1,3,3,3,3,1 }, 

{ 1,1,24,24,23,24,24,1,1,1,1,3,1 }, 

{ 1,1,1,1,7,1,1,1,1,1,1,3,1 }, 

{ 5,1,1,1,7,7,7,7,7,1,1,1,1 }, 

{ 6,3,3,1,3,3,3,1,7,7,7,3,1 }, 

{ 6,3,3,1,3,1,1,1,1,1,7,1,1 }, 

{ 3,3,1,1,1,1,1,1,1,1,7,1,1 } }; 

}else{ 

int[][] board = { 

{ 1,1,1,1,1,24,1,1,1,1,1,1,1 }, 


{ 1,1,1,1,1,24,1,1,1,1,1,1,1 }, 

{ 1,1,1,1,1,24,1,1,24,1,1,1,1 }, 

{ 1,1,1,1,1,24,1,1,24,1,1,1,1 }, 

{ 1,1,7,1,1,24,24,24,24,1,1,1,1 }, 

{ 1,1,7,1,1,24,1,24,1,1,1,1,1 }, 

{ 1,1,1,1,1,24,1,1,1,1,1,1,1 }, 

{ 1,1,1,1,1,24,1,1,1,1,1,1,1 }, 

{ 1,3,3,1,1,24,1,1,1,1,1,1,1 }, 

}; } return board; } 

및 전화 그것은 내가 사용 :

보드 = loadBoard (1);

저는 이것을 init() 메소드에 넣었습니다. 그런 식으로 loadBoard() 내부의 숫자로지도를 호출 할 수 있습니다. 그러나 내가 게임을 시작할 때 nullpointer 예외가 발생하고 방금 위에서 설명한 코드와 관련이 있다는 사실을 알게되었습니다. 아마 내가 신나고있는 신기한 실수 일거야. 아마 너 도움이 될거야?

답변

2

입니다. "보드"변수를 다시 만듭니다. 이름이 같더라도 반환하는 변수는 생성 한 변수가 아닙니다. 내가 지금 얼마나 많은 "번호"당신이 또 다른 제안 배열을 생성하지하는 것입니다 :)

하도록 기획하고한다면

public int[][] loadBoard(int map) { 
    if (map == 1) { 
return new int[][] { 

{2,2,24,24,24,24,24,3,3,0,0,0,1 }, 

{ 2,2,24,23,23,23,24,1,3,0,0,0,1 }, 

{ 1,1,24,23,23,23,24,1,3,3,3,3,1 }, 

{ 1,1,24,24,23,24,24,1,1,1,1,3,1 }, 

{ 1,1,1,1,7,1,1,1,1,1,1,3,1 }, 

{ 5,1,1,1,7,7,7,7,7,1,1,1,1 }, 

{ 6,3,3,1,3,3,3,1,7,7,7,3,1 }, 

{ 6,3,3,1,3,1,1,1,1,1,7,1,1 }, 

{ 3,3,1,1,1,1,1,1,1,1,7,1,1 } }; 

}else{ 

return new int[][] { 

{ 1,1,1,1,1,24,1,1,1,1,1,1,1 }, 


{ 1,1,1,1,1,24,1,1,1,1,1,1,1 }, 

{ 1,1,1,1,1,24,1,1,24,1,1,1,1 }, 

{ 1,1,1,1,1,24,1,1,24,1,1,1,1 }, 

{ 1,1,7,1,1,24,24,24,24,1,1,1,1 }, 

{ 1,1,7,1,1,24,1,24,1,1,1,1,1 }, 

{ 1,1,1,1,1,24,1,1,1,1,1,1,1 }, 

{ 1,1,1,1,1,24,1,1,1,1,1,1,1 }, 

{ 1,3,3,1,1,24,1,1,1,1,1,1,1 }, 

}; } 

} 

그것은 더 simp'ified 수 있습니다 여기에 고정 코드는 그 (것)들을 즉시, 그러나 상수로 가지고 있으십시오. 그런 다음 메서드에서 적절한 배열을 반환합니다. 코드는 (더 후 2 선택에 대한)처럼 보일 수 있습니다 :

private static final int[][] BOARD1 = <array here>; 
private static final int[][] BOARD2 = <array here>; 
private static final int[][] BOARD3 = <array here>; 
private static final int[][] BOARD4 = <array here>; 


public function int[][] loadBoard(int choice) { 
    switch(choice) { 
     case 1: return BOARD1; 
     case 2: return BOARD2; 
     case 3: return BOARD3; 
     case 4: return BOARD4; 
     default: throw new RuntimeException("Unknown board choice"); 
    } 
} 
+0

"내가 유래를 물어 갈 것입니다, 그것을 나사"고 말했다 그럼 뭐야? 고맙습니다. P – nn2

+0

ps - 코드 "return board"에 대한 코드에 도달 할 수 없습니다. S – nn2

+0

@ Dan - 잘 삭제하십시오. –

0

null 포인터가이 코드와 관련이 있는지 잘 모르겠습니다. 그러나 if/else 문의 범위 안에 board을 선언하고 범위 밖에서이 변수를 반환한다는 것은 실제로 이상합니다.

+0

그래, 내가 좀 잘못 중간이었다 내가 무엇을하고 있었 발견하지만 그때의 4 가정 해 봅시다 – nn2