2013-12-08 53 views
0

我試圖實施一個需要循環的程序的工作原理:的Java while循環用netbean錯誤

Scanner scan=new Scanner(System.in); 
String word= scan.next().toLowerCase(); 
while !(word.equals("mot1") || word.equals("mot2") || word.equals("motmot") || word.equals("motmotmot")){ 
word= word.next().toLowerCase(); 
} 

它的工作原理,但是,它強調用紅色錯誤小波while條件!

顯示在左側帶有感嘆號的邊框的錯誤(!),並說 「(」 expexted 「)」預期

,所以我一直在試圖把支架在所有的感官,只有當它不能工作時纔會發生小波變換,並且存在無限循環!

我不知道爲什麼?

乾杯

另外:

當小波關閉,但不會做什麼打算,但邏輯是在這裏:

String word= scan.next().toLowerCase(); 
      while (!word.equals("onetime") || !word.equals("daily") || !word.equals("weekly") || !word.equals("monthly")){ 

} 
+0

請檢查java'while'循環語法。你把「!」放在哪裏? –

+1

它無法編譯時如何工作? –

+0

是的,但它的作品,就像這樣!它編譯並做我想要的,問題是Netbean在沒有的時候顯示錯誤。 – Rsmusic

回答

1

該邏輯錯誤,並且患有the same issue as I answered here

即,

!x || !y || !z 

等效於(由De Morgan's Law

!(x && y && z) 

由於(在這種情況下)中,x,y和z可以從未所有真在同一時間結果如下:

!(false) -> true 

然後,正確的邏輯是!(x || y || z)或再次應用規則!x && !y && !z


在任何情況下,我會建議使用,利用上面介紹的邏輯函數寫吧..

while (!validChoice(word)) { 
    // .. 
} 

boolean validChoice (String word) { 
    return word.equals(..) || word.equals(..) ..; 
} 

..因爲這就是我如何讓事情簡單一點在我的腦海。

+0

我相信他的問題的性質與他的代碼的格式有關。「while」循環以錯誤的方式執行。 「while(條件)」應該包括執行的代碼,並且在使用break時滿足條件時中斷;語句 - 除非引入了do/while循環。 –

+0

@ E.Doroskevic這是查看它的一種方法。但是,我個人很少使用'break'並且發現爲什麼循環永遠不會終止的原因*需要被理解。 – user2864740

+0

好的,謝謝,你怎麼發展!(x || y || z)呢? – Rsmusic

0

你的錯誤與您的代碼的格式。分配的語法不正確。

String word; 

while (!word.equals("onetime") || !word.equals("daily") || !word.equals("weekly") || !word.equals("monthly")){ 
    word = input.next(); 
    // do something; 
}