2012-04-29 67 views
1

這對我來說根本沒有意義。我的if語句總是返回true,無論如何

這是我的代碼:

boolean that = false; 
     if (that == true); 
     { 
      System.out.println("That is " + that); 
     } 

然而它會打印行,即使我的輸出是

That is false 

我在Java這樣做的,我使用Eclipse伽利略所以每次編譯/運行我的程序時都會保存它,以便編譯器能夠獲取我的程序的更新版本。 發生了什麼事?

+2

如果(即== TRUE); :) 去掉 ;一個 –

回答

9

一個常見的錯誤。在if聲明末尾刪除;

BTW我總是寫下面的,如果我用括號我用的是IDE的代碼格式化。

if (that == true) { 
     System.out.println("That is " + that); 
    } 

這意味着如果你有一個錯誤放置;{它可以更明顯。

+0

我也愛你你是對的 – user1364363

+0

它很容易做到。 ;) –

2

試試這樣說:

boolean that = false; 
    if (that) 
    { 
     System.out.println("That is " + that); 
    } 

發現在你的代碼中if後多餘的分號?這就是爲什麼。

邏輯測試是由分號閉合,則下一個塊總是進行。

如果你刪除了分號,它會符合你的直覺。

+0

是的。你是對的。 – user1364363

3

這是因爲分號的你在這裏:

if (that == true); 

刪除分號!它會導致代碼檢查條件(that == true)後做什麼 - 技術上這是一個「空聲明」 - 即我們能有一個循環,像這樣:

for (int i = 0; ; i++){ 
     System.out.println("Thanks"); 
    } 

而且,它還將一直持續下去!

+1

我也愛你是的,你說得對 – user1364363

+0

@ user1364363 - :)謝謝你, – Coffee

3

刪除;

boolean that = false; 
    if (that == true) 
    { 
     System.out.println("That is " + that); 
    } 

否則打印總是執行。

+1

我愛你,不相信我沒有意識到這-.- – user1364363

2
if (that == true); 
       //^The extra colon you dont need 
+0

我也愛你是的,你說得對 – user1364363