【发布时间】:2014-10-27 14:48:52
【问题描述】:
我有一个数组,我在平铺地图上创建了几把剑,当我踩到它们时,它们需要被删除,但是当我踩到它们时,游戏会崩溃。
在 java.util.ArrayList$Itr.checkForComodification(未知来源) 在 java.util.ArrayList$Itr.next(Unknown Source)
我的代码:
我猜循环正在寻找对象,即使它被删除了?
private List<Sword> swords = new ArrayList<Sword>();
我一次创建它们:
public GameRender(GameWorld world, int gameHeight) {
for (int i = 0; i<100 ; i++ ) {
swords.add(new Sword());
}
当我踩到它时:
for (Sword sword : swords) {
if(playery+7>=sword.position.y && playery+7<=sword.position.y+tilesize
&& playerx+7>=sword.position.x &&playerx+7<=sword.position.x+tilesize) {
sword.pickMe();
swords.remove(sword);
}
}
render() 中还有其他循环:
for (Sword sword : swords) {
sword.createMe();
}
我认为你不需要看剑类。如果你这样做,我会把它放在这里。我该如何解决它,以免出现错误?
【问题讨论】:
-
ConcurrentModificationException因为您使用的是增强的 for 循环,因此隐含了一个迭代器。迭代时不能修改正在迭代的列表。 -
对不起,我不太明白。我不太懂编码的英语。你能用代码告诉我这是如何工作的吗?
-
我同时也发布了一个答案:p