gpt4 book ai didi

java - 删除 ArrayList-Java 的元素

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

对于 Java 家庭作业,我们被分配初始化一个包含字典单词的字符串 ArrayList。如果单词的长度不是我们生成的,那么它们将从 ArrayList 中删除。以下代码不起作用。

public static int randLength() {
int range=(RAND_MAX-RAND_MIN)+1;
int randomNum=(int)(Math.random()*range)+RAND_MIN;
return randomNum;
}

该函数工作正常。

int randomLength=randLength();
System.out.println(randomLength);
for(int i=0;i<dictionaryList.size()-1;i++) {
if(dictionaryList.get(i).length()!=randomLength) {
System.out.println("The lucky word is " + dictionaryList.get(i));
dictionaryList.remove(i);
}
}

然而,事实并非如此。 DictionaryList 使用单词文本文件进行初始化。我的是,“苹果”“啤酒”“查理”“小狗”“大象”“福格蒂”在某些情况下,上面的代码确实会删除不属于 randomLength 值的单词。然而,它并没有将它们全部删除。任何帮助将不胜感激。

最佳答案

当您从 ArrayList 中删除一个项目时,您将跳过列表中的下一个项目,并且不会检查是否应删除它。

例如,如果您列出的是“apples”、“beer”、“charlie”、“dogs”、“atom”、“elephant”,则应删除的单词长度的随机数为 4(啤酒、狗和原子应该被删除),“原子”不会被删除。当for循环运行时,其运行如下:

i:0,单词:“苹果”,未删除

i:1,单词:“啤酒”,已删除

i:2,单词:“狗”,已删除

i:3,单词:“大象”,未删除。

如果删除某个元素,则必须将 i 减 1,以便检查所有元素。您可以通过输入 i-- 来做到这一点在 dictionaryList.remove(i) 之后的行中

发生这种情况是因为当从 ArrayList 中删除一个元素时,它后面的所有元素都会向下移动以填充空间,这与 Array 不同。

此外,您的 for 循环应该有 i<dictionaryList.size()而不是i<dictionaryList.size()-1为了检查最后一个元素。

您还可以使用迭代器来迭代 ArrayList,但如果您还没有学过,您可能不想使用它。

关于java - 删除 <String> ArrayList-Java 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53530778/

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