2015-04-29 11 views
5

Czy jest jakaś różnica między zapisaniem wielu instrukcji if a instrukcjami ?Czy wiele instrukcji "if" i "if-else-if" jest takich samych dla warunków wykluczających się wzajemnie?

Kiedy próbowałem napisać program z wieloma instrukcjami if, Nie dało to oczekiwanych rezultatów, ale działało z if-else-if.

Warunki wzajemnie się wykluczały.

+3

O ile warunki się nie wykluczają, tak, to robi różnicę. – dcastro

+3

_ "Kiedy próbowałem napisać program z wieloma instrukcjami" if ", nie dało to oczekiwanych rezultatów, ale z" if else-if "zadziałało." _ Myślę, że właśnie odpowiedziałeś na to pytanie sam ... –

+0

"Jeśli" stwierdzenia są obecne w wielu językach i są jedną z podstaw programowania. Ta strona dotyczy pytań i odpowiedzi dotyczących konkretnych problemów z programowaniem, więc taka dyskusja byłaby tutaj zbyt szeroka i poza tematem. – Abhay

Odpowiedz

8

Podczas pisania wielu instrukcji if może się zdarzyć, że więcej niż jeden z nich zostanie oceniony jako prawdziwy, ponieważ instrukcje są niezależne od siebie.

Podczas pisania pojedynczej instrukcji if else if if if if, else tylko jeden warunek może zostać oceniony jako true (po znalezieniu pierwszego warunku, który zwraca wartość true, następne warunki if-if są pomijane).

Możesz wykonać wiele instrukcji if zachowując się jak pojedyncza instrukcja if else if if, jeśli każdy z bloków warunku wyłamie się z bloku zawierającego instrukcje if (na przykład, przez powrót z metody lub przerwanie z pętla).

Na przykład:

public void foo (int x) 
{ 
    if (x>5) { 
     ... 
     return; 
    } 
    if (x>7) { 
     ... 
     return; 
    } 
} 

będzie miał takie samo zachowanie jak:

public void foo (int x) 
{ 
    if (x>5) { 
     ... 
    } 
    else if (x>7) { 
     ... 
    } 
} 

ale bez oświadczenia zwrotu będzie miał różne zachowanie gdy x> 5 i x> 7 są zarówno prawdziwe.

0

Nie oba są różne. jeśli instrukcje sprawdzi wszystkie warunki. Jeśli napiszesz wiele instrukcji, sprawdzisz każdy warunek. Jeśli jeszcze sprawdzisz warunki, dopóki nie zostaną spełnione. Raz, jeśli/else jeśli jest spełnione, to będzie poza tym blokiem.

0

Tak, to robi różnicę: patrz The if-then and if-then-else Statements.

Co więcej, można go łatwo przetestować.

Kod # 1:

int someValue = 10; 

    if(someValue > 0){ 
     System.out.println("someValue > 0"); 
    } 

    if(someValue > 5){ 
     System.out.println("someValue > 5"); 
    } 

wyświetli:

someValue > 0 
someValue > 5 

Chociaż kod # 2:

int someValue = 10; 

    if(someValue > 0){ 
     System.out.println("someValue > 0"); 
    }else if(someValue > 5){ 
     System.out.println("someValue > 5"); 
    } 

tylko wyjście:

someValue > 0 

Jak widać, kod # 2 nigdy nie przechodzi do drugiego bloku, ponieważ pierwsza instrukcja (someValue> 0) ocenia na true.

0
if() 
{ 
stmt.. 
} 
else 
{ 
stmt 
} 
if() 
{ 
stmt 
} 
here compiler will check for both the if condition. 

W poniższej fragement z kodem kompilator będzie sprawdzić, czy warunki, jak tylko pierwszy warunek, jeśli się prawdą pozostały jeśli warunek będzie obwodnica.

 if(){ 

     } 
     else if 
     { 

     } 
     else if 
     { 

     } 
     else if 
     { 

     } 
Powiązane problemy