ArrayIndexOutOfBoundsException,仅打印第一行

时间:2014-02-17 01:52:15

标签: java arrays printing multidimensional-array indexoutofboundsexception

我正在用Java制作一个地下城游戏。我创建了一个将地图存储在2D数组中的方法。该数组如下所示:

[[#, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #],
[#, ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., #],
[#, ., ., ., ., ., ., 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

为什么我收到此错误消息?我怎么能在将来阻止它?

3 个答案:

答案 0 :(得分:9)

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

您可能希望让变量更加一致。

通过在i循环中递增j,您几乎可以保证超出world数组的末尾(“附近”,因为如果其中一个“子阵列”的大小为零,但根据您的输入数据,这种情况不太可能出现这种情况。)

答案 1 :(得分:5)

你在j循环中递增i而不是j。然而,我没有得到的是为什么它只会在一行之后崩溃。我认为你的第一个数组中只有1个项目,不是吗?

答案 2 :(得分:0)

你在嵌套的for循环中递增i而不是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]);
        }