Question

Si j'ai un bloc d'instructions comme celui-ci:

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

ou comme ceci:

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

Quelle est la différence?

Il semble que avec if / else, si une partie est pour un état vrai et la partie autre pour toutes les autres options possibles (false). Une autre option serait utile pour un certain nombre de conditions. C’est ce que je comprends. Y at-il autre chose que je devrais connaître?

Était-ce utile?

La solution

Situation a:

if( condition )
{
}
else
{
}

Lorsque la condition de l'instruction ci-dessus est fausse, les instructions du bloc else sont toujours exécutées.

Situation b:

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

Lorsque 'condition' est fausse, les instructions du bloc else si ne seront exécutées que lorsque la condition2 est vraie. Les instructions du bloc else seront exécutées lorsque la condition 2 sera fausse.

Autres conseils

Sans "elseif". syntaxe, vous devrez écrire des instructions if en chaîne pour traiter l'un des résultats possibles de cette manière:

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

à la place, vous pouvez écrire

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

qui est complètement identique au précédent, mais semble beaucoup plus joli et beaucoup plus facile à lire.

De nombreuses langues ont une grammaire semblable à celle-ci (ici: Spécification du langage ECMAScript , donc JavaScript):

  

IfStatement :
  & nbsp; & nbsp; & nbsp; & nbsp; si ( Expression ) Instruction sinon Déclaration
  & nbsp; & nbsp; & nbsp; & nbsp; si ( Expression ) Déclaration

     

Déclaration :
  & nbsp; & nbsp; & nbsp; & nbsp; Bloquer
  & nbsp; & nbsp; & nbsp; & nbsp; VariableStatement
  & nbsp; & nbsp; & nbsp; & nbsp; EmptyStatement
  & nbsp; & nbsp; & nbsp; & nbsp; ExpressionStatement
  & nbsp; & nbsp; & nbsp; & nbsp; IfStatement
  & nbsp; & nbsp; & nbsp; & nbsp; IterationStatement
  & nbsp; & nbsp; & nbsp; & nbsp; ContinueStatement
  & nbsp; & nbsp; & nbsp; & nbsp; BreakStatement
  & nbsp; & nbsp; & nbsp; & nbsp; ReturnStatement
  & nbsp; & nbsp; & nbsp; & nbsp; WithStatement
  & nbsp; & nbsp; & nbsp; & nbsp; Déclaration étiquetée
  & nbsp; & nbsp; & nbsp; & nbsp; SwitchStatement
  & nbsp; & nbsp; & nbsp; & nbsp; ThrowStatement
  & nbsp; & nbsp; & nbsp; & nbsp; Déclaration de test

     

Bloquer :
  & nbsp; & nbsp; & nbsp; & nbsp; { Liste des déclarations opt }

     

StatementList :
  & nbsp; & nbsp; & nbsp; & nbsp; Déclaration
  & nbsp; & nbsp; & nbsp; & nbsp; StatementList Instruction

Ainsi, les branches d'un ifStatement peuvent contenir un bloc d'instructions ( Block ) ou l'une des autres instructions (autre que Block ) . Cela signifie que cela est valide:

if (expr)
    someStatement;
else
    otherStatement;

Et comme StatementList peut ne contenir qu'une seule instruction, ces exemples sont équivalents aux précédents:

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

if (expr)
    someStatement;
else {
    otherStatement;
}

if (expr) {
    someStatement;
} else
    otherStatement;

Et lorsque nous remplaçons otherStatement par un IfStatement supplémentaire, nous obtenons ceci:

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

Le reste ne concerne que le formatage du code:

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

Soulignant ce que dit Gumbo.

En outre, si une langue a une véritable instruction elif / elsif / elseif (par exemple, une instruction "réelle" else-if, au lieu d’une sorte d’enchaînement imbriqué masqué par le formatage), le compilateur peut facilement émettre une seule noeud dans un arbre de syntaxe abstraite (ou similaire, voir http://en.wikipedia.org/wiki/Abstract_syntax_tree ) au lieu de les imbriquer.

Pour donner un exemple:

Dites en C / C ++ que vous avez:

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

Ensuite, le compilateur construira un nœud AST comme suit:

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

Mais si la langue de choix a un réel if-else:

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

Ensuite, l'AST pourrait plus facilement ressembler à ceci:

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

Dans une telle langue, un "if if else". ne serait possible que si les accolades ne sont pas obligatoires:

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

AST correspondant ( si les accolades ne sont pas obligatoires ):

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

Cela pourrait rendre CFG-Analysis ( http://en.wikipedia.org/wiki/Control_flow_graph ) plus facile à implémenter (bien qu’il ne puisse y avoir aucun avantage réel en termes d’optimisation; donc, cela profiterait tout simplement au programmeur paresseux: D).

sinon si signifie fondamentalement que la partie else de si est une autre instruction si .

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

si / else si / else

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

si / else et si / else si utilisé aussi comme ceci

Étant donné une seule variable, vous utiliserez la structure simple if-else . Quand il y a plusieurs variables et que vous avez un chemin différent à exécuter pour les différentes possibilités, vous utiliserez si-sinon si -...- sinon . Notez que ce dernier se termine également par une instruction else .

Vous avez déjà donné la réponse vous-même. if / else est pour le résultat true / false, comme est un int = 2 ou toute autre valeur int possible, et si / elseif est pour plus de 2 résultats, comme un int = 2, et int = 3 et ainsi de suite.

En outre, il regroupe le contexte d'une variable. Vous pouvez vérifier chaque résultat comme

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

Avec if / else / else s'il est mieux lisible.

si vous souhaitez vérifier plusieurs conditions, nous pouvons utiliser if..elseif. condition unique alors nous pouvons utiliser si ou si ... autre.

Ici, je ne peux pas télécharger l'explication complète avec un exemple, veuillez donc suivre les liens suivants.

if..des autres détails de la déclaration
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);
        }
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top