2013-06-18 16 views
12

Si consideri il seguente codice nidificato non formattato if-else Javacomportamento nidificato if-else senza bretelle

if (condition 1) 
if (condition 2) 
action 1; 
else 
action 2; 

La mia domanda è: in base alle specifiche del linguaggio Java, a quello che se si applica il ramo else?

Riformattando e aggiungendo le parentesi, quale di queste due è corretta?

Blocco 1:

if (condition 1) { 
    if (condition 2) { 
     action 1; 
    } else 
     action 2; 
    } 
} 

Blocco 2:

if (condition 1) { 
    if (condition 2) { 
     action 1; 
    } 
} 
else { 
    action 2; 
} 
+15

Hai provato? – DannyMo

+3

... e perché mai lo scriverebbe senza le parentesi graffe? – Rup

+10

Scriviamo programmi per l'uomo per capire, scrivete sempre if else statement with braces –

risposta

23

Dal documentation:

Il linguaggio di programmazione Java, come C e C++ e molti linguaggi di programmazione prima di loro, arbitrariamente decreta che una clausola else appartiene al più interno se a cui potrebbe eventualmente appartenere.

+2

+1, mi hai battuto di 30 secondi :) – gaborsch

4

Si può provare e scoprire che il else vale per l'interno if:

http://ideone.com/iBorYi

Questo è una buona ragione per non scrivere codice come thi S. È molto difficile leggere e capire cosa sta succedendo.

4

blocco 1 è corretto, in caso situazioni altro senza staffe l'altro è legato alla più vicina se

if (condition 1) 
if (condition 2) 
action 1; 
else 
action 2; 

è lo stesso di

if (condition 1) 
    if (condition 2) 
    action 1; 
    else 
    action 2; 

anche parentesi sono per il bene della livello di comprensione e facilità. In più grandi se else, non avendo staffe rende errore molto comune

Problemi correlati