我有一个任务要创建一个竞赛模拟器。我有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);
}
答案 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