2016-04-12 231 views
0

我有一個代碼寫在下面,這幾乎是一個if語句嵌套到另一個,因此,如果第一個if語句不正確,運行下面的代碼嵌套if語句不會運行。嵌套如果聲明

我知道這意味着你是不是能夠使第二if語句真實的,但我的問題很簡單:

是第二,如果因第一次說法正確,但忽略if語句是假的或者是第二個if語句完全錯誤嗎?

我的問題的代碼如下:

int temperature; 
myWindow.clearOut(); 
temperature = Integer.parseInt(myWindow.readIn()); 
if (temperature >= 18) { 
    myWindow.writeOutLine(temperature + " is greater than or equal to 18"); 
    if (temperature % 2 == 0) 
     myWindow.writeOutLine(temperature + " is an even number"); 

} 
+2

第二個if語句是薛定諤的貓 - 它既不是真也不是假,因爲它從來沒有被評估過。 –

+0

@OriLentz謝謝:) –

回答

0

嵌套的,如果因爲這是從來沒有評估,完全忽略說法既不是真的還是假的。 (感謝Ori和Berger)。

2

你不知道,因爲如果第一個if語句計算爲它就會不執行第二個if語句是否將評估爲真正

這就是現代編程語言的工作原理 - 應該執行的代碼被添加到一堆命令中。如果第一條語句的計算結果爲false,那麼if的主體中沒有內容被添加到堆棧中。

0

有三種方法可以做到這一點 - 您必須自己決定。

/** 
* Warning on temp >= 18. 
* Warning on temp >= 18 && temp is even. 
*/ 
public void test1() { 
    if (temperature >= 18) { 
     myWindow.writeOutLine(temperature + " is greater than or equal  to 18"); 
     if (temperature % 2 == 0) { 
      myWindow.writeOutLine(temperature + " is an even number"); 
     } 
    } 
} 

/** 
* Warning on temp >= 18. 
* Warning on temp is even. 
*/ 
public void test2() { 
    if (temperature >= 18) { 
     myWindow.writeOutLine(temperature + " is greater than or equal  to 18"); 
    } 
    if (temperature % 2 == 0) { 
     myWindow.writeOutLine(temperature + " is an even number"); 
    } 

} 

/** 
* Warning on temp >= 18. 
* Warning on temp < 18 && temp is even. 
*/ 
public void test3() { 
    if (temperature >= 18) { 
     myWindow.writeOutLine(temperature + " is greater than or equal  to 18"); 
    } else if (temperature % 2 == 0) { 
     myWindow.writeOutLine(temperature + " is an even number"); 
    } 
} 
+0

我只是運行一個程序,其中有兩個如果陷阱聲明作爲一個測試一起,糾正我,如果我錯了,但test3給予其他如果聲明是正確的機會,即使第一if statement is wrong –

+0

@TimothyKardaras - 正確,但不*機會*。它是'test1 - > A && B','test2 - > A || B || both','test3 - > A || B'。 – OldCurmudgeon

0

第二如果條件實際上是適應了第一個,因爲你永遠不會知道,如果溫度均勻,直到它是真的,它是大於18 ...

這樣的級聯條件可以是一個坑跌倒找到應用程序中的錯誤...

我會建議重新排序的條件

+0

我知道縮進可能有點草率,但是我的條件順序有什麼問題,特別是對於這樣一個小程序? –

0

第2,如果統計ement if (temperature % 2 == 0)可能會或可能不會是真實的,但只有在第一條if語句if (temperature >= 18)爲真時纔會執行。