2016-11-10 219 views
-3

在Java中,if應該有{},除非在if下只有一行。爲什麼我的Java代碼可以運行?

但是,爲什麼下面的代碼可以在我的電腦上運行?

int x=1; 
int y=1; 


     if(x<=4) 
      if(y>=4) 
       System.out.println("%%%"); 
      else 
       System.out.println("+++"); 
      System.out.println("***"); 

下面是它看起來像我的IDE:

所有的一切都運行良好。下面是結果(下它加載其他資源,不關心這個。我只是修改了一些我的代碼,以儘快嘗試的代碼。)

+1

'System.out.println(「***」);'每次都執行,它不在'if'或'else'語句中。這只是非常有意義的,應該與第一個「if」處於同一水平。 – Adam

+0

單行不正確。一個可執行的代碼塊 –

+0

請提供說明該規則的來源(所以我們可以告訴你它有多少錯誤) – ortis

回答

-3

這是你的代碼

if(x<=4) 
    if(y>=4) 
     System.out.println("%%%"); 
    else 
     System.out.println("+++"); 
    System.out.println("***"); 

這就是Java會把 如果(布爾)轉到下一行 如果(布爾)確定這是假的,去別的˚F

3

Java將在else關聯到LA st候選人if。 您的代碼(用大括號)等於

if(x<=4) { 
    if(y>=4) { 
     System.out.println("%%%"); 
    } else { 
     System.out.println("+++"); 
    } 
} 
System.out.println("***"); 

候選if當在ifelse之間恰好1個語句(以分號結束)或塊匹配。

+0

也是java在if或者else之後執行一條語句。而不是整條線。因爲在java中,你可以在同一行寫多個語句。如果其他工作像大括號工作。如果你打開另一個支架而不關閉上一個支架。任何新的右大括號被認爲是當前最大的大括號。 – Acewin

0

謝謝大家,並解決問題。

重點是,if執行下一個語句或塊。 Java將以下代碼視爲整個語句。

`if(y>=4) 
    System.out.println("%%%"); 
else 
    System.out.println("+++");` 

它遵循第一個if

上次打印不在考慮範圍內,它只是由縮進造成的。

相關問題