-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陣列(「近」的結束,因爲這可能不會發生,如果「子陣」之一的大小爲零,但根據您的輸入數據,這不太可能是這種情況)。

5

你在j循環中增加了我而不是j。然而,我不明白爲什麼它只會在一行之後崩潰。我猜你在第一個數組中只有一個項目,不是?

0

你增加i,而不是法官在你的嵌套的for循環:

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]); 
     }