如何修复Java中的ArrayIndexOutOfBoundsException?

如何修复Java中的ArrayIndexOutOfBoundsException?,java,javax.imageio,Java,Javax.imageio,我得到一个ArrayIndexOutOfBoundsException,但只有当getSubImage函数存在时 这是通过循环获取精灵。我在没有getsubimage的情况下尝试过,也尝试过使用不同的for循环,但没有任何效果 这与我所比较的线程不同,因为我在另一个线程中使用for循环。没有getSubimage,程序运行得很好,for循环也运行得很好。我不知道问题在哪里,也不知道是什么 try { BufferedImage spritesheet = Ima

我得到一个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();
    }

我希望它能通过这个循环得到所有的精灵。实际情况是,它没有获取子映像,只是抛出了一个越界异常。

您的程序正在尝试从数组中检索索引不可用的元素。检查第15行是否已经创建了numFrames一些where?。可能您没有使用正确的数组,或者numFrames没有具有该特定索引的元素。尝试运行调试器并查看哪个数组超出索引