Java 将 2D 数组与数字进行比较给出了例外



我正在尝试将 2D 数组与数字进行比较,但它抛出了一个异常。

法典

import org.newdawn.slick.Color;
public class Main {
    public static int[][] map = {{0, 2, 1, 3, 4, 1, 1, 3, 4, 1, 3, 5, 1},
    {1, 2, 1, 3, 4, 1, 1, 3, 4, 1, 3, 5, 1},
    {2, 2, 1, 3, 4, 1, 1, 3, 4, 1, 3, 5, 1},
    {3, 2, 1, 3, 4, 1, 1, 3, 4, 1, 3, 5, 1},
    {4, 2, 1, 3, 4, 1, 1, 3, 4, 1, 3, 5, 1},
    {5, 2, 1, 3, 4, 1, 1, 3, 4, 1, 3, 5, 1},
    {6, 2, 1, 3, 4, 1, 1, 3, 4, 1, 3, 5, 1},
    {7, 2, 1, 3, 4, 1, 1, 3, 4, 1, 3, 5, 1}};
    public static void main(String args[]) {
        int I = 0;
        int II = 0;
        for (int y = 0; y < 7; y++) {
            for (int x = 0; x < 11; x++) {
                if (map[x][y] == 0) {
                    g.setColor(Color.blue);
                    g.fillRect(I, II, 100, 100);
                }
                if (map[x][y] == 1) {
                    g.setColor(Color.orange);
                    g.fillRect(I, II, 100, 100);
                }
                if (map[x][y] == 2) {
                    g.setColor(Color.white);
                    g.fillRect(I, II, 100, 100);
                }
                if (map[x][y] == 3) {
                    g.setColor(Color.red);
                    g.fillRect(I, II, 100, 100);
                }
                if (map[x][y] == 4) {
                    g.setColor(Color.green);
                    g.fillRect(I, II, 100, 100);
                }
                if (map[x][y] == 5) {
                    g.setColor(Color.gray);
                    g.fillRect(I, II, 100, 100);
                }
                I = x * 100;
                I = y * 100;
            }
        }
    }
}

它的抛出例外是java.lang.ArrayIndexOutOfBoundsException: 8这是针对裸露的平铺地图系统,如果要测试它,则需要 slick2D 并需要将其放入渲染循环中。

这是因为您正在尝试访问行8并且您只有最大位置7

请记住,行和列的索引从位置 0 开始,到 length-1 结束。

另外,您必须记住,数组的第一个位置(在您的情况下为 x ,是行,y是列。

array[rows][columns]

因此,您必须更改循环中变量的顺序。喜欢这个:

for(int x = 0; x < map.length; x++){
    for(int y = 0; y < map[x].length; y++){

其余代码可以像上面一样。

我希望这对你有帮助!

相关内容

  • 没有找到相关文章

最新更新