2016-03-04 43 views
-1

答案是13但是我不明白編譯器如何得到13有人可以向我解釋這個嗎?如果Java中的Else運算符優先級?

public class IfClass { 

    public static void main(String[] args) { 

     int number1 = 1, number2 = 2, number3 = 3, number4 = 4; 

     if(number2 <= 2 && !(number1 > 1) || number3 <= 4 && !(number4 > 2) 
      System.out.print(1); 
     else 
      System.out.print(2); 

     System.out.print(3); 
     //output = 13 
    } 

} 
+2

'NUMBER2 <= 2 &&!(數字1> 1)'是真實的,並且打印的'3'超出了條件 – SomeJavaGuy

+0

縮進在Java程序中是不相關的。嘗試讓您的IDE重新格式化您的源碼 –

+1

嘗試調試以查看哪些行被執行。當使用'if,else,for ...'時也使用'{}' –

回答

0

如果條件滿足,從而它被打印1,然後隨着括號不使用其他將適用於只有一條線是System.out.print和(3)不是的if-else塊,以便它的一部分正在打印3

1

還是讓我崩潰的狀態到小步驟

if(number2 <= 2 && !(number1 > 1) || number3 <= 4 && !(number4 > 2))如果爲真,並打印1如果number2 <= 2 && !(number1 > 1)number3 <= 4 && !(number4 > 2)。否則將打印2

讓我們首要條件number2 <= 2 && !(number1 > 1) ..他們都應該是真實的.. 爲數字2是2 - 它驗證它的第一部分number2 <= 2 相似數字1是1,它不可能永遠大於1但!是正確的。

因此,我們的第一個條件爲真...它將執行System.out.print(1)和以下我System.out.print(3) ...因此輸出是13