2017-06-22 38 views
-5

無法跳出while循環。我的代碼有什麼問題? 一切看起來正確的邏輯我:Java - 無法跳出循環

雖然(而不是 's' 或不是 'P') ---打印線: 「重新」 --- ReadInput:

while (!answerInput.equals("s") || !answerInput.equals("p")) 
{ 
    System.out.print("Wrong Input. Type S for Sum or P for Product: "); 
    answerInput = userInput.next(); 
    answerInput = answerInput.toLowerCase();  
} 

請指教。

+0

如果你會說*當(不是 's' 或 'P')*你的錯誤是可以理解的。但是,如何(而不是'或'不'')有什麼意義? – shmosel

回答

4

用簡單的英語,你的代碼是說:

如果「answerInput」比「S」以外的東西,「answerInput」比「P」以外的東西,這種表達是真實的。

該聲明永遠不會是錯誤的。這顯然不是'不'或'不';它不能同時是兩個值。兩個不平等中的一個永遠是真實的,因此整個表達也總是如此。

什麼,你應該說的是:

如果「answerInput」比「S」以外的東西,「answerInput」也比「P」以外的東西,這種表達是真實的。

其中,在Java中,被表述爲:

while (!answerInput.equals("s") && !answerInput.equals("p")) 
+1

謝謝Govind。看起來我的邏輯不是一切都很好。必須繪製所有可能的真/假組合來查看我錯在哪裏。我希望它現在會粘在我的頭上。 –