我尝试制作一个简单的轮盘赌,但是当我尝试删除特定玩家的所有数据时(因为他们已经丢失了所有钱),我的游戏崩溃并显示错误:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at exam.Exam.main(Exam.java:330)
这是我崩溃的代码行(我住在丹麦所以名字都是丹麦语):
Spiller是我的Arraylist
,antalSpillere
是玩家的数量,
denneSpiller
是我想删除的玩家的具体数据。
for (int i = 0; i < antalSpillere; i++) {
Spiller denneSpiller = spillere.get(i);
if (denneSpiller.bank < 1){
spillere.remove(denneSpiller);
antalSpillereCheck ++;
}
else {
antalSpillereMedPengeIBanken ++;
}
}
当for循环结束时,游戏首先崩溃,如果我删除了spiller.remove(denneSpiller);
,则不会崩溃。
答案 0 :(得分:1)
数组中的索引从JTable
开始,因此如果数组中有0
个对象,则最后一个对象具有索引5
。
在您的示例中,当数组中只有两个
时,您希望删除索引4
上的对象(第三个元素)
2
答案 1 :(得分:0)
由于移除玩家时antalSpillere
会减少,因此你的for循环条件会变得无效。所以你需要替换:
for (int i = 0; i < antalSpillere; i++)
使用:
for (int i = 0; i < spillere.size(); i++)
随着玩家被移除, spillere.size()
将会更新。