在while循环内的每个循环中,对a内的列表使用remove

时间:2019-05-19 22:34:17

标签: java

我有一个任务要创建一个竞赛模拟器。我有8个对象存储在列表中。我需要查看其中一个对象何时越过终点线,并将其从列表中删除,然后将它们放在另一个列表中。为此,我在每个循环中使用a。我需要每执行一个步骤就执行一次此检查,因此,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);
    }

1 个答案:

答案 0 :(得分:0)

如果您收到Option Explicit Sub Tester() Dim myFile, myPath, ws As Worksheet, wbCase As Workbook, sheetName myPath = "path/to/files/" myFile = Dir(myPath & "*.xls*") Do While myFile <> "" Set wbCase = Workbooks.Open(Filename:=myPath & myFile, UpdateLinks:=0) For Each ws In wbCase.Worksheets Select Case ws.Name Case "P3", "P2": 'got a match, so do something here with ws Exit For 'umless you want to look for other sheets End Select Next ws wbCase.Close SaveChanges:=False myFile = Dir Loop End Sub 或类似内容,请考虑在列表为空的情况下中断ArrayIndexOutOfBoundsException循环内的while循环。例如:

for