我正在尝试创建一个程序,其中可以输入添加到数组中的单词,直到输入两次相同的单词。程序就破了。
这样的事情:
public static void main(String[] args) {
ArrayList<String> words = new ArrayList<String>();
Scanner reader = new Scanner(System.in);
while (true) {
System.out.println("Type a word: ");
String word = reader.nextLine();
words.add(word);
if (words.contains(word)) {
System.out.println("You typed the word: " + word + " twice.");
break;
}
每次我输入一个单词时,程序会说&#34;你输入了两次单词。&#34;我需要找到一种方法来区分数组中的项目。是否可以使用for block? 谢谢。
答案 0 :(得分:4)
您在word
检查之前将words
添加到contains
。
if (words.contains(word)) {
System.out.println("You typed the word: " + word + " twice.");
break;
} else {
words.add(word);
}
将解决此问题。
您还应考虑将words
设为Set
,其查找速度更快,且不允许重复。
答案 1 :(得分:2)
稍微改进的版本是使用Set
:当元素已经存在时,其add
方法返回false
(并且它比列表更有效&#34;找到&#34;元素 - 虽然在你的情况下,因为只有少量的单词,所以它不会产生明显的差异。)
Set<String> words = new HashSet<> ();
while (true) {
System.out.println("Type a word: ");
String word = reader.nextLine();
if (!words.add(word)) {
System.out.println("You typed the word: " + word + " twice.");
break;
}
}