java - 数组越界,但我不确定为什么?

标签 java arrays

所以这是我使用的双数组

public int[][] MAP = { { 8, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8 },
        { 8, 8, 9, 9, 8, 8, 8, 8, 8, 8, 8 },
        { 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8 },
        { 8, 8, 8, 9, 9, 8, 8, 8, 8, 8, 8 },
        { 8, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8 },
        { 8, 8, 8, 9, 9, 9, 8, 8, 8, 8, 8 },
        { 8, 8, 9, 9, 9, 8, 8, 8, 8, 8, 8 },
        { 8, 8, 8, 9, 9, 9, 8, 8, 8, 8, 8 },
        { 8, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8 },
        { 8, 8, 8, 8, 8, 9, 9, 9, 8, 8, 8 },
        { 9, 8, 8, 8, 8, 8, 9, 9, 9, 8, 8 },
        { 9, 8, 8, 8, 8, 8, 9, 9, 9, 8, 8 },
        { 9, 8, 8, 8, 8, 8, 9, 9, 9, 8, 8 },
        { 9, 8, 8, 8, 8, 8, 9, 9, 9, 8, 8 },
        { 9, 8, 8, 8, 8, 8, 9, 9, 9, 8, 8 } };

我的问题是,当我尝试使用它加载相应的图像时,我收到一条错误消息,指出当 y = 12 时它超出范围。

Image[][] displayedMap = new Image[MAP[0].length][MAP.length];

    public Town() {
        System.out.println("Map len" + MAP.length);
        for (int x = 0; x < MAP[0].length; x++) {
            for (int y = 0; y < MAP.length; y++) {
                System.out.println("X:" + x + ",Y:" + y);
                setImageContent(x, y);
            }
        }
    }

    private void setImageContent(int x, int y) {
        Terrain t = Terrain.getTerrainFor(MAP[x][y]);
        displayedMap[x][y] = t.getImage();
    }

当城镇构造函数中 y 变为 11,然后转到它所说的 setImagecontent 时

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 11

最佳答案

您交换了数组的尺寸,在数组的一部分中,您使用“X 轴”的大小作为 Y 轴,反之亦然

关于java - 数组越界,但我不确定为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17983163/

相关文章:

javascript - 在一个对象中获取 2 个属性时遇到问题

javascript - 使用 lodash 合并两个数组内的对象

java - 为什么一个用户会得到 NoSuchMethodError 而成千上万的用户却没有?

c++ - 将指向数组数组的指针传递给函数

java - 如何在数组中添加元素?

将十六进制 C 数组转换为 Matlab vector

java - 使用扫描仪和开关盒找不到符号

java - 调用 fillTable() 时出现 NullPointerException 错误

java - 修复 Java OOP 中的方法

java - eclipse java 项目(包和类)中黄色感叹号 ("!") 的原因是什么?