-2

Java에서 던전 게임을 만들고 있습니다. 두 번째 배열에지도를 저장하는 메서드를 만들었습니다. 배열은 다음과 같습니다.ArrayIndexOutOfBoundsException, 첫 번째 줄만 인쇄합니다.

[[#, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #], 
[#, ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., #], 
[#, ., ., ., ., ., ., G, ., ., ., ., ., ., ., ., E, ., #], 
[#, ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., #], 
[#, ., ., E, ., ., ., ., ., ., ., ., ., ., ., ., ., ., #], 
[#, ., ., ., ., ., ., ., ., ., ., G, ., ., ., ., ., ., #], 
[#, ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., #], 
[#, ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., #], 
[#, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #]] 

이제 게임에서지도를 인쇄 할 수 있도록 함수를 작성하려고합니다. 지금까지 나는 이것을 생각해 냈다.

public void printMap(char[][] map) { 
    for (int i = 0; i < map.length; i++) { 
     for (int j = 0; j < map[i].length; i++) { 
      System.out.print(map[i][j]); 
     } 
    } 
} 

그러나 첫 번째 줄을 인쇄 한 후에이 오류 메시지가 나타납니다.

#########Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9 

왜이 오류 메시지가 표시됩니까? 앞으로 어떻게 막을 수 있습니까?

+2

가 오류의 의미에 대해 어떻게 생각하십니까? –

+1

@JonathonReinhart 블로그를 읽지 마시고, 글을 작성하십시오! 좌절감 구제. –

답변

9
for(int j=0; j < world[i].length; i++){ 
// ^^    ^
//  J J     I <- No! Bad dog :-) 

변수를 좀 더 일관성있게 설정할 수 있습니다. j 루프에서 i을 증가시켜

, 당신은 그렇게하지 않을 수 있기 때문에 "서브 - 어레이"의 하나는 크기가 경우 "근처"는 world 배열 (의 끝을 넘는거야 보장 근처에있어 0인데 입력 된 데이터를 기반으로 여기서는 맞지 않습니다.

5

j 루프에서 j 대신 i를 증가시킵니다. 그러나 내가 얻지 못하는 것은 단 한 줄로 추락하는 이유입니다. 첫 번째 배열에 1 개 이상의 항목이 있다고 가정합니까?

0

당신은 대신 J의 난을 증가하고 당신의 루프 중첩 :

for(int j=0; j < world[i].length; i++){ 
       System.out.print(world[i][j]); 
      } 

변화 :

for(int j=0; j < world[i].length; j++){ 
      System.out.print(world[i][j]); 
     } 
관련 문제