对于某些背景信息,我正在制作商店系统,而收集的硬币存储在一个数组中,然后在购买商品时删除。
问题是,即使硬币数量大于价格(即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);
}
}
答案 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正在发生”。使用某种调试方法。输出语句的替代方法是使用断点并逐行逐步执行程序。