如何检查ArrayList中是否包含字符串?

时间:2017-07-31 19:46:33

标签: java

我有以下代码,只要没有尝试输入已经在数组中的单词,我希望代码继续执行。输入第一个单词后退出而不是这样做。

    do {
        System.out.print("Type a word: ");
        enteredWord = reader.nextLine();
        words.add(enteredWord);
    } while (!words.contains(enteredWord));

如果我更改底线以使用诸如“test”之类的设置词,则程序正常工作。我已经尝试将print语句用于测试,它向我展示了单词设置正确并且存在于数组中。

4 个答案:

答案 0 :(得分:0)

做类似的事情:

    boolean alreadyThere;
    do {
        System.out.print("Type a word: ");
        enteredWord = reader.nextLine();
        alreadyThere = words.contains(enteredWord);
        words.add(enteredWord);
    } while (!alreadyThere);

在添加单词之前,您可以决定它是否已存在。当然,仍然可以改进(使用Set而不是List,只有在尚未存在的情况下才添加单词,等等。)

答案 1 :(得分:0)

评论正确识别问题。修复是在将其添加到列表之前检查输入的单词是否存在。这是一个可能的解决方案:

while (true) {
    System.out.print("Type a word: ");
    enteredWord = reader.nextLine();
    if (words.contains(enteredWord)) {
        break;
    }
    words.add(enteredWord);
}

答案 2 :(得分:0)

在检查列表中的单词之前,您在列表中添加单词。 请尝试以下方法:

for(;;) {
    System.out.print("Type a word: ");
    enteredWord = reader.nextLine();
     if(words.contains(enteredWord)) {
        break; //ends loop
     }
     words.add(enteredWord);
}

答案 3 :(得分:0)

感谢大家的建议。正如我刚才所说,我在数组中添加了一个单词,然后检查它是否已添加,因此它正在退出。菜鸟错了。我采用了以下解决方案。

    while (true) {
        System.out.print("Type a word: ");
        enteredWord = reader.nextLine();
        if (!words.contains(enteredWord)) {
            words.add(enteredWord);
        } else {
            break;
        }
    }