2017-07-31 138 views
-2

我有下面的代码,只要没有尝试输入已存在于数组中的单词,我希望代码保持执行。而不是这样做,它会在输入第一个单词后退出。如何检查一个字符串是否包含在ArrayList中?

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

如果我改变底线来使用设置词,如“测试”,那么程序工作正常。我已经尝试将打印语句用于测试,并向我显示该词已正确设置并存在于数组中。

+6

一旦他们进入的第一个字,你将它添加到的话,那么它现在包含在的话,那么你的循环退出... – azurefrog

+2

你的循环是没有意义的。为什么在添加它之后,arraylist不会包含该单词? – Li357

+0

只是把它改成一个简单的while循环,所以你首先检查循环条件,然后在里面输入一个单词 –

回答

0

在检查单词在列表中之前,先在列表中添加单词。 请尝试以下操作:

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

smarx之前得到它;) – crashxxl

0

做喜欢的事:

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

您确定它是否已经存在,你加字之前。当然,这仍然可以改进(使用Set而不是List,仅在不存在时才添加该单词,等等)。

0

评论正确地确定了问题。修复方法是在之前检查输入的单词是否存在,然后将其添加到列表中。以下是一个可能的修复方法:

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

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

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