处理IntList.remove()会抛出ArrayIndexOutOfBounds:10异常

时间:2014-11-03 13:45:27

标签: java processing

我正在尝试在Processing中制作一个小型射击游戏,当我点击鼠标按钮时,我创建了一些沿着屏幕移动的子弹,当他们离开屏幕时他们应该消失,我使用{{1我保持这样的值:IntList,我的问题是,在下面的代码中,我尝试删除子弹的索引,我随机获得(X1, Y1, X2, Y2, ...)异常,即使我检查了删除前IntList的大小。有什么帮助吗?

ArrayIndexOutOfBounds: 10

修改
我想我找到了一个线索:当我在屏幕上看到5个子弹时,总会发生异常(目前,镜头的大小变为10)。

2 个答案:

答案 0 :(得分:1)

变化:

for(i = 1; i < shots.size(); i += 2){

要:

for(i = 0; i < shots.size(); i += 2){

List的索引从0开始,而不是1.因为你每次都加2,所以它超出for循环i < shots.size()if-statement的点,因为它只检查值+ 1,而不是值+2。

答案 1 :(得分:0)

这实际上很有趣,因为我认为IntList是动态的,因为ArrayList据说来自Processing文档,如描述下的here所示,正如@Eran I所建议的那样移动到ArrayList进行测试,然后在Java文档中我发现我认为可变的初始声明shots = new IntList();实际上是初始容量10的声明,如here所述,所以&#39;为什么我得到ArrayIndexOutOfBounds: 10例外,现在我通过声明shots = new IntList(20);

解决了