如何在Java中修复ArrayIndexOutOfBoundsException?

时间:2019-01-02 19:50:27

标签: java javax.imageio

我得到一个ArrayIndexOutOfBoundsException,但仅当存在getSubImage()函数时。

这是为了遍历并获取精灵。我尝试了没有getsubimage的尝试,并且尝试使用不同的for循环,尽管没有任何帮助。

这与我正在比较的线程不同,因为我在另一个线程内部使用了for循环。该程序在没有getSubimage的情况下也可以正常工作,而for循环也可以正常工作。我不知道问题出在哪里或者是什么。

        try {

        BufferedImage spritesheet = ImageIO.read(
            getClass().getResourceAsStream(
                "/Sprites/SpriteSheet.gif"          
                    )
        );

        sprites = new ArrayList<BufferedImage[]>();
        for(int i = 0; i < 6; i++) {

            BufferedImage[] bi =
                new BufferedImage[i];

            for(int j = 0; j < numFrames[i]; j++) {

                    bi[j] =    spritesheet.getSubimage(
                            i * width,
                            j* height,
                            width,
                            height
                    );

                }
                sprites.add(bi);

            }


        }


    catch(Exception e) {
        e.printStackTrace();
    }

我希望它可以循环遍历并获得所有精灵。实际发生的是它没有得到子图像,而只是抛出了超出范围的异常。

1 个答案:

答案 0 :(得分:0)

您的程序正在尝试检索数组中没有索引的元素。检查第15行(是否已在某些位置创建numFrames?)。您使用的数组可能不正确,或者numFrames没有具有该特定索引的元素。尝试运行调试器,看看哪个数组索引不足。