【发布时间】:2018-11-29 01:59:07
【问题描述】:
对于一个 java 家庭作业,我们被分配初始化一个包含字典单词的字符串数组列表。如果单词不是我们生成的长度,那么它们将从 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 值的单词。但是,它不会将它们全部删除。任何帮助将不胜感激。
【问题讨论】:
-
也许只是
i < dictionaryList.size(),你为什么在这里减一? -
是的,这没有考虑到最后一个元素,但是更大的问题是我没有考虑到一旦元素被删除,arraylist 就会被缩短。这反过来并没有搜索数组列表的所有元素。 Mathias 的解决方案有效!感谢您的意见。