【发布时间】:2013-10-28 01:41:30
【问题描述】:
对于一些背景信息,我正在制作一个商店系统,而收集的硬币存储在一个数组中,然后在购买物品时移除。
问题是,即使硬币数量大于价格(即 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);
}
}
【问题讨论】:
-
gamescreen.map.getCoinSize() - 1 - f计算结果为-1。您不能有负索引。 -
如果 f = 0? -1 是因为数组从 0 开始,所以最大数不是数组的实际大小。而 f 是指向我要删除的索引(从最后一个开始)。
-
您确定您的 getCoinSize() 正在返回正确的值吗?比如有币收
(0, 1, 2, 3),大小必须是4。
标签: java android arraylist indexoutofboundsexception