Frage

Wenn ich ein Anweisungsblock wie folgt aus:

if (/*condition here*/){ }
else{ }

oder wie folgt aus:

if (/*condition here*/)
else if (/*condition here*/) {}
else if (/*condition here*/) {}

Was ist der Unterschied?

Es scheint, dass mit if / else, wenn ein Teil für wahre Zustand ist und der andere Teil ist für alle anderen möglichen Optionen (false). Ein anderes, wenn würde für eine Reihe von Bedingungen nützlich sein. Das ist mein Verständnis, gibt es etwas mehr mir bewusst sein sollte?

War es hilfreich?

Lösung

Situation ein:

if( condition )
{
}
else
{
}

Wenn die Bedingung in der obigen Aussage falsch ist, dann werden die Anweisungen in dem else-Block immer ausgeführt werden.

Situation b:

if( condition )
{
}
else if( condition2 )
{
}
else
{
}

Wenn ‚Bedingung‘ falsch ist, dann in der anderen die Anweisungen, wenn Block wird nur dann ausgeführt werden, wenn condition2 wahr ist. Die Aussagen in der else-Block wird ausgeführt, wenn condition2 falsch ist.

Andere Tipps

Ohne „elseif“ Syntax würden Sie haben Kette zu schreiben, wenn-Anweisungen für die Verarbeitung einer von mehreren möglichen Ergebnissen auf diese Weise:

if( str == "string1" ) {
   //handle first case
} else {
    if( str == "string2" ) {
       //handle second case
    } else {
       if( str == "string3" ) {
           //handle third case
       } else {
          //default case
       }
    }
 }

stattdessen können Sie schreiben

if( str == "string1" ) {
   //handle first case
} else if( str == "string2" ) {
   //handle second case
} else if( str == "string3" ) {
   //handle third case
} else {
   //default case
}

, die vollständig die gleiche wie die vorherige ist, sieht aber viel schöner und ist viel einfacher zu lesen.

Viele Sprachen haben eine grammer wie folgt aus (hier: ECMAScript Language Specification , so JavaScript):

  

IFSTATEMENT :
   if ( Expression ) Statement else Statement
   if ( Expression ) Statement

     

Statement :
   Block
   VariableStatement
   EmptyStatement
   ExpressionStatement
   IFSTATEMENT
   IterationStatement
   ContinueStatement
   BreakStatement
   ReturnStatement
   WithStatement
   LabelledStatement
   SwitchStatement
   ThrowStatement
   TryStatement

     

Block :
   { Statement opt }

     

Statement :
   Statement
   Statement Statement

So die Zweige eines IFSTATEMENT kann einen Block von Anweisungen enthalten ( Block ) oder eines der anderen Aussagen (außer Block ) . Das heißt, dies gilt:

if (expr)
    someStatement;
else
    otherStatement;

Und wie Statement nur eine einzige Anweisung enthält, sind diese Beispiele äquivalent zu dem vorherigen:

if (expr) {
    someStatement;
} else {
    otherStatement;
}

if (expr)
    someStatement;
else {
    otherStatement;
}

if (expr) {
    someStatement;
} else
    otherStatement;

Und wenn wir ersetzen otherStatement durch eine zusätzliche IFSTATEMENT , bekommen wir diese:

if (expr) {
    someStatement;
} else
    if (expr) {
        someOtherStatement;
    }

Der Rest ist nur Code-Formatierung:

if (expr) {
    someStatement;
} else if (expr) {
    someOtherStatement;
}

betonend, was Gumbo sagte.

, auch wenn eine Sprache, hat eine echte elif / elsif / elseif (sagen wir, eine „echte“ elseif Anweisung anstelle einer Art von verschachtelten Verkettungs versteckt durch Formatierung), dann kann der Compiler easly einen einzelnen Knoten emittieren in einem Abstract Syntax-Baum (oder ähnlich, siehe http://en.wikipedia.org/wiki/Abstract_syntax_tree ), anstatt sie zu nisten.

Um ein Beispiel zu geben:

Sagen in C / C ++ Sie haben:

if (a) {
    X
} else if (b) {
    Y
} else if (c) {
    Z
} else {
    0
}

Dann wird der Compiler einen AST-Knoten wie folgt aufbauen:

   a
  / \
 X   b
    / \
   Y   c
      / \
     Z   0

Aber wenn die Sprache der Wahl hat eine echte if-else:

if (a) {
    X
} elif (b) {
    Y
} elif (c) {
    Z
} else {
    0
}

Dann könnte der AST leichter aussehen:

   (a--b--c)
   /  /  /  \
  X  Y  Z    0

In einer solchen Sprache, ein „wenn sonst“ nur möglich wäre, wenn Klammern sind nicht zwingend notwendig:

if (a) {
    X
} elif (b) {
    Y
} else if (c) {  // syntax error "missing braces" if braces mandatory
    Z
} else {
    0
}

Entsprechende AST (, wenn Klammern sind nicht obligatorisch ):

   (a--b)
   /  /  \
  X  Y    c
         / \
        Z   0

Dies könnte machen CFG-Analyse ( http://en.wikipedia.org/wiki/Control_flow_graph ) leichter zu implementieren (obwohl es vielleicht keine tatsächliche Optimierung Nutzen sein, so imho es nur den faulen Programmierer profitieren würde. D)

else if bedeutet im Grunde das else Teil if ist eine weitere if Aussage.

**if/else**
if(condition)
  statement;
else
   statement;

if / else if / else

if(condition)
 {
   if(condition)
      statement;
   else 
     statement;
  }   
else if(condition)
{
    if(condition)
     statement;
    else
     statement;
}
else
    statement;

if / else und wenn / sonst, wenn auch wie folgt verwendet

eine einzelne Variable gegeben, werden Sie die einfache if-else Struktur verwenden. Wenn mehrere Variablen sind, und Sie haben einen anderen Weg für die verschiedenen Möglichkeiten auszuführen, werden Sie if-else if-...-else verwenden. Beachten Sie, dass dieser endet auch mit einer else Aussage.

Du hast die Antwort schon selbst. if / else für wahr / falsch Ergebnis ist, ist wie ein int = 2 oder jeder anderer möglicher int Wert, und wenn / elseif ist für mehr als 2 Ergebnisse, wie ein int = 2 und int = 3 und so weiter.

Auch Gruppen den Kontext einer Variablen. Sie könnten jedes einzelne Ergebnis überprüfen wie

if (a == 2) { do one thing };
if (a == 3) { do another thing };
...
if (a != 2 && a != 3 ...) { do something else };

Mit if / else / elseif es ist besser lesbar.

Wenn Sie wollen mehr Zustand überprüfen wir if..elseif verwenden können. einzige Bedingung, dann können wir, wenn oder if ... else verwenden.
Hier kann ich nicht in der Lage, die vollständige Erklärung mit Beispiel zu laden, so gehen Sie bitte die folgenden Links.
if..else Aussage Details
http://allinworld99.blogspot.in/2016 /02/ifelse-flow-chart-with-easy-example.html
if ... elseif Details
http://allinworld99.blogspot.in /2016/02/flow-chart-with-example-for-if-then.html

import java.util.*;

public class JavaApplication21 {
    public static void main(String[] args) {

        Scanner obj = new Scanner(System.in);
        System.out.println("You are watching an example of if & else if statements");

        int choice, a, b, c, d;
        System.out.println(" Enter 1-Addition & 2-Substraction");

        int option = obj.nextInt();
        switch (option) {
            case (1):
                System.out.println("how many numbers you want to add.... it can add up to 3 numbers only");
                choice = obj.nextInt();
                if (choice == 2) {
                    System.out.println("Enter 1st number");
                    a = obj.nextInt();

                    System.out.println("Enter 2nd number");
                    b = obj.nextInt();

                    c = a + b;

                    System.out.println("Answer of adding " + a + " & " + b + " is= " + c);
                } else if (choice == 3) {
                    System.out.println("Enter 1st number");
                    a = obj.nextInt();

                    System.out.println("Enter 2nd number");
                    b = obj.nextInt();

                    System.out.println("Enter 3rd number");
                    c = obj.nextInt();

                    d = a + b + c;

                    System.out.println("Answer of adding " + a + " , " + b + " & " + c + "  is= " + d);
                }
            case (2):
                System.out.println("how many numbers you want to substract.... it can substract up to 3 numbers only");
                choice = obj.nextInt();
                if (choice == 2) {
                    System.out.println("Enter 1st number");
                    a = obj.nextInt();

                    System.out.println("Enter 2nd number");
                    b = obj.nextInt();

                    c = a - b;
                    System.out.println("Answer of substracting " + a + " & " + b + " is= " + c);
                } else if (choice == 3) {
                    System.out.println("Enter 1st number");
                    a = obj.nextInt();

                    System.out.println("Enter 2nd number");
                    b = obj.nextInt();

                    System.out.println("Enter 3rd number");
                    c = obj.nextInt();

                    d = a - b - c;
                    System.out.println("Answer of substracting " + a + " , " + b + " & " + c + "  is= " + d);
                }
            default:
                System.out.println("no option you have chosen" + option);
        }
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top