2017-07-31 140 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; 
     } 
    } 
相關問題