对于某些背景信息,我制作了一个商店系统,而收集的硬币存储在一个数组中,然后在购买商品时将其移除。当错误指出长度较长时,ArrayList会引发错误
问题是,即使硬币的数量大于价格(即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是指向我想要删除的索引(从最后一个开始)。 – A13X
你确定你的getCoinSize()返回正确的值吗?例如,如果有硬币收集'(0,1,2,3)',大小必须是4. – Christian