0

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

问题是,即使硬币的数量大于价格(即 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);
   }
}
4

1 回答 1

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 正在发生”。使用某种调试方法。输出语句的替代方法是使用断点并逐行单步执行您的程序。

于 2013-10-28T01:51:07.593 回答