如何检测重复的单词是否在数组java中

时间:2018-03-15 14:45:26

标签: java

我正在尝试创建一个程序,其中可以输入添加到数组中的单词,直到输入两次相同的单词。程序就破了。

这样的事情:

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? 谢谢。

2 个答案:

答案 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;
  }
}