我有以下代码,只要没有尝试输入已经在数组中的单词,我希望代码继续执行。输入第一个单词后退出而不是这样做。
do {
System.out.print("Type a word: ");
enteredWord = reader.nextLine();
words.add(enteredWord);
} while (!words.contains(enteredWord));
如果我更改底线以使用诸如“test”之类的设置词,则程序正常工作。我已经尝试将print语句用于测试,它向我展示了单词设置正确并且存在于数组中。
答案 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;
}
}