Java的:索引越界(Java: Index out of bounds)

2019-10-21 20:39发布

我编程在Greenfoot中的一所学校的项目,我不断收到此错误:

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)

通过这样的代码:

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 ++;
                    }
                }
            }
        }
    }      

我似乎没有能够找到错误,到目前为止,因为我做了一些检查,以检查索引。 谁能帮我这个?

Answer 1:

我会解释的错误(因为附带的代码实际上是导致异常的代码)的原因 ,即使问题没有代码,找出究竟它究竟是如何发生。

java.lang.IndexOutOfBoundsException:指标:1,规格:1

意味着你正在访问List大小1与索引1指数在Java是从零开始,所以索引:1指在列表中的第二个元素。 没有第二元件,因此该异常。

从代码中你已经给你只有一个列表,所以错误发生在这里:

wapenLijst.get(gebruiktWapen).schietKogel();

在应用程序中的一个给定的状态, wapenLijst有一个元素和gebruiktWapen是1.按照上述说明中,您尝试访问的第二个元素的列表时,只存在一个。

你能以某种方式可能实现一些检查,不允许gebruiktWapen比变大wapenLijst.size()



文章来源: Java: Index out of bounds