ArrayIndexOutOfBoundsException,仅打印第一行

use*_*051 -2 java printing arrays multidimensional-array indexoutofboundsexception

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

[[#, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #],
[#, ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., #],
[#, ., ., ., ., ., ., G, ., ., ., ., ., ., ., ., E, ., #],
[#, ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., #],
[#, ., ., E, ., ., ., ., ., ., ., ., ., ., ., ., ., ., #],
[#, ., ., ., ., ., ., ., ., ., ., G, ., ., ., ., ., ., #],
[#, ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., #],
[#, ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., ., #],
[#, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #, #]]
Run Code Online (Sandbox Code Playgroud)

我现在正在尝试编写一个函数,以便我可以在游戏中打印出地图.到目前为止,我想出了这个:

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]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,在打印出第一行后,我收到此错误消息.

#########Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
Run Code Online (Sandbox Code Playgroud)

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

pax*_*blo 9

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

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

通过增加ij循环,你靠近保证你会超越结束world阵列("近",因为如果"子阵"中的一个具有大小为零,可能不会发生,但是这不太可能在这里,根据您的输入数据).


Cod*_*key 5

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