当错误表示长度更长时,ArrayList引发错误

时间:2013-10-28 01:41:30

标签: java android arraylist indexoutofboundsexception

对于某些背景信息,我正在制作商店系统,而收集的硬币存储在一个数组中,然后在购买商品时删除。

问题是,即使硬币数量大于价格(即80个硬币,但只从ArrayList中减去75个),也会抛出此错误。

java.lang.ArrayIndexOfBoundsException: length=202; index=-1;

代码循环给了我一个艰难的时间(我还有其他一些像这样的问题,而且只剩下几个硬币时问题似乎总是存在):

if(this.name.equals("SHOTGUN BURST") && gamescreen.map.getCoinSize() >= this.price) {
player.isShotty = true;
for(int f = 0; f < this.price; f++) { 
       gamescreen.map.coinsCollect.remove(gamescreen.map.getCoinSize() - 1 - f);
   }
}

1 个答案:

答案 0 :(得分:0)

数组索引-1(您尝试访问的堆栈跟踪)总是超出界限。

出于调试目的,暂时将代码更改为:

for(int f = 0; f < this.price; f++) {
   System.out.println("f = %d", f);
   System.out.println("getCoinSize() = %d", gamescreen.map.getCoinSize());
   System.out.println("Array Index = %d", (gamescreen.map.getCoinSize()-1-f); 
   gamescreen.map.coinsCollect.remove(gamescreen.map.getCoinSize()-1-f);
}

不要说“出于某种原因X正在发生”。使用某种调试方法。输出语句的替代方法是使用断点并逐行逐步执行程序。