【发布时间】:2019-05-19 22:34:17
【问题描述】:
我有一个任务是创建一个比赛模拟器。我有 8 个对象存储在一个列表中。我需要查看其中一个对象何时越过终点线并将它们从列表中删除并将它们放入另一个列表中。为此,我使用了 for each 循环。每次迈出一步时,我都需要执行此检查,因此,foreachloop 位于 while 循环内。当每个人都越过终点线时,while 循环将停止并结束比赛。
while (lista.size()>0) {
for (RaceTurtle raceTurtle : lista) {
raceTurtle.raceStep();
if(raceTurtle.getX() > RaceWindow.X_END_POS) {
lista.remove(raceTurtle);
winners.add(raceTurtle);
}
w.delay(10);
}
}
我曾尝试使用迭代器,但它只会抛出同样的错误。我也尝试使用原始列表的副本,但这似乎不起作用,因为它在 while 循环中。
如果有人能给我一个如何做到这一点的例子,我将不胜感激。
用迭代器再次尝试,这次成功了。
while (lista.size()>0) {
for (Iterator<RaceTurtle> iterator = lista.iterator(); iterator.hasNext();) {
RaceTurtle temp = iterator.next();
temp.raceStep();
if (temp.getX()> RaceWindow.X_END_POS) {
winners.add(temp);
iterator.remove();
}
}
w.delay(50);
}
【问题讨论】:
-
用那里的例子试过,它工作,很奇怪,因为我之前用迭代器试过,但没有用。
标签: java