對於某些背景信息,我製作了一個商店系統,而收集的硬幣存儲在一個數組中,然後在購買商品時將其移除。當錯誤指出長度較長時,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