Java: Index out of bounds

久未见 提交于 2019-12-24 14:33:01

问题


I'm programming in Greenfoot for a school project and I keep getting this error:

java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at Speler.act(Speler.java:60)
at greenfoot.core.Simulation.actActor(Simulation.java:583)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:541)
at greenfoot.core.Simulation.runContent(Simulation.java:215)
at greenfoot.core.Simulation.run(Simulation.java:205)

By this code:

if (Greenfoot.isKeyDown("s"))
    {
        int wapenID;
        if(schietTimer < 1)
        {
            if(richting != null)
            {
                if(gebruiktWapen != -1)
                {
                   {
                       getWorld().addObject(new Kogel(richting), getX(), getY());
                       schietTimer = 30;
                       wapenLijst.get(gebruiktWapen).schietKogel();

                       System.out.println(wapenLijst.size());

                       if(wapenLijst.get(gebruiktWapen).hoeveelKogels() == 0)
                       {
                           gebruiktWapen++;
                       }
                   }
                }
                else
                {
                    if(wapenLijst.size() > 0)
                    {
                        gebruiktWapen ++;
                    }
                }
            }
        }
    }      

I don't seem to be able to find the error so far since I did some checks to check the index. Can anyone help me out with this?


回答1:


I will explain the reason for the error (given that the attached code is actually the code that causes the exception), even if the question lacks code to exactly pinpoint exactly how it occurs.

java.lang.IndexOutOfBoundsException: Index: 1, Size: 1

means that you are accessing a List of size 1 with index 1. Indices in Java are zero based, so Index: 1 means the second element in the list. There is no second element, hence the exception.

From the code you have given you only have one list, so the error happens here:

wapenLijst.get(gebruiktWapen).schietKogel();

At a given state in your application, wapenLijst has one element and gebruiktWapen is 1. As per the explanation above, you try to access the second element in the list when there only is one.

Could you perhaps somehow implement some check that does not allow gebruiktWapen to become larger than wapenLijst.size()?



来源:https://stackoverflow.com/questions/28458295/java-index-out-of-bounds

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!