2012-01-11 97 views
1
if ((clearance.equals("")) || (!clearance.equals("0")) || (!clearance.equals("1"))){ 
    System.out.println("Invalid entry, exiting.\n"); 
    System.exit(0); 
} 

但是,當我鍵入0或1它仍然打印「無效輸入,退出」。如果語句String.equals()

任何想法出了什麼問題?

+0

許可是字符串類型。我可以打印出來的值,它顯示0或1,但if語句似乎跳過它。 – 2012-01-11 18:10:50

+0

每個實例我只鍵入一個數字,0或1. – 2012-01-11 18:11:32

+0

請在此之前發表一些行。什麼是clearence?在進入if之前什麼是cleareance的價值? – sfratini 2012-01-11 18:17:40

回答

12

條件應爲:

if (!clearance.equals("0") && !clearance.equals("1")) { 

您當前的表達始終計算爲true(因爲任何字符串不等於 「0」 或 「1」)。

+1

除了可能需要第一個「||」(取決於語句如何重寫)。 – 2012-01-11 18:15:12

+0

@hotlicks是啊謝謝你的評論...它現在可以工作了... – 2012-01-11 18:19:24

+0

@aix謝謝你說清楚,被邏輯困惑,被困在這個如果循環45分鐘!感謝您的幫助。 – 2012-01-11 18:20:04

1

你的邏輯錯了。

if ((clearance.equals("")) || ((!clearance.equals("0")) && (!clearance.equals("1")))){

+0

謝謝!意識到我的錯誤.. – 2012-01-11 18:21:35

0

想想看:你要如果clearance != "0"或者如果clearance != "1"打印錯誤消息。這些或那些將永遠是真實的。

+1

謝謝...我的邏輯去了haywire ...它的230am在這裏..感謝球員的幫助.. – 2012-01-11 18:21:19

0

如果許可爲「1」,那麼它不是「0」,所以你會在那裏短路,並且值是真實的。如果清除率爲0,那麼它不是1,所以你的陳述是真實的。

+0

謝謝你的答案.. – 2012-01-11 18:24:58