gpt4 book ai didi

java - 使用 for 循环从列表中删除电影。 For循环工作一次然后抛出索引越界异常

转载 作者:行者123 更新时间:2023-11-30 05:38:50 25 4
gpt4 key购买 nike

for 循环旨在从电影列表中删除电影。循环第一次成功运行,但一旦删除第二部电影,For 循环就会抛出越界异常。电影列表包含17部电影

我尝试过更改 size 变量的值以及每次循环时减小 size 变量的值。

public String toString(){
StringBuilder returnString = new StringBuilder();

int newSize = 16;

for (int i = 0; i <newSize ; i++) {
returnString.append(i+1).append("\n");
returnString.append("Movie title: ")
.append(movieList.get(i).getTitle())
.append("\n");
returnString.append("Lead Actor: ")
.append(movieList.get(i).getActor())
.append("\n");
returnString.append("Release Year: ")
.append(movieList.get(i).getYear())
.append("\n");
returnString.append("Genre: ")
.append(movieList.get(i).getGenre())
.append("\n");
}

return returnString.toString();
}

最佳答案

当您删除元素并继续迭代同一列表时,您必须考虑数据结构如何索引其元素。

您的代码的问题是,当您删除元素 2 时,第三个元素将成为第二个元素。因为,当您从列表中删除一个元素时,所有后续元素都会移动以取代它的位置。如果您尝试删除倒数第二个元素,您将得到异常。为了摆脱这个令人头疼的问题,请尝试向后迭代列表。

for(int i = list.size(); i >= 0; i--) {
// do stuff here, like removing
}

关于java - 使用 for 循环从列表中删除电影。 For循环工作一次然后抛出索引越界异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56105525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com