当我试图从txt和内存中删除一行时,该如何修复此异常


public static void deleteEntry(String title, ArrayList<String> myLines, ArrayList<Movie> myMovieList) {
boolean isMatch = false;
boolean titleHasMovie = false;
String realTitle = title;
for (int i = 0; i < myMovieList.size(); i++) {
String tempTitle = myMovieList.get(i).getTitle();
isMatch = realTitle.equalsIgnoreCase(tempTitle);
if (isMatch) {
fileWrite myWriteFile = new fileWrite("src/Main/db.txt");
myWriteFile.setWriteBuffer(myLines);
myWriteFile.deleteLine(i);
myWriteFile.saveFile();
titleHasMovie = true;
}
}
if (!titleHasMovie)
p("Title not found");
p("");
}

myLines是和包含的ArrayList

movieTitle*年份*运行时间(分钟(*演员1*演员2*导演

钢铁侠*2008*126*小罗伯特·唐尼*Gwyneth Paltrow*Jon Favreau

这是当我尝试或成功删除一行时引发的异常

at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
at java.base/java.util.Objects.checkIndex(Objects.java:359)
at java.base/java.util.ArrayList.get(ArrayList.java:427)
at Main.Database.deleteEntry(Database.java:95)
at Main.Main.main(Main.java:89)```

我很确定它抛出了一个越界错误,因为您在迭代时删除了条目。您应该尝试反向运行循环:for(int i = myLines.size() - 1; i >= 0; i--)

此外,我不确定为什么for循环的上限是i < myLines.size() + 2;,而只是.size((