← (précédent) A.7 Les structures de contrôle (1) : For - While - Do...While
A.9 Les tableaux (1) : déclaration, affection, taille.
Accueil S O M M A I R E

A.8 Les structures de contrôle (2) :
if - if...else - else if - switch

Lorsque vous concevez un programme, il peut arriver que vous vouliez que votre programme fasse des choix. C' est à dire que certaines instructions soient exécutez selon des conditions booléennes. Si telle situation est vraie, alors exécutez cette ou ces instructions. Sinon, exécutez plutôt celle ou celles-là. Pour y arriver, on utilise des structures conditionnelles. Les mot-clés java correspondant sont if, else, else if et switch.
 EXEMPLE 1 : 

1.     public class Conditionnelle1
2.     {
3.          public static void main (String [] args)
4.          {
5.               int a = 21, b = 22;
6.               if(a < b)
7.               {
8.                    System.out.println("a est moins grand que b");
9.               }
10.              else
11.              {
12.                   System.out.println("a est plus grand que b");                      
13.              }
14.         }
15.    }
compilez puis exécutez ce programme, il sera affiché : a est moins grand que b

En effet, la structure conditionnelle s' explique ainsi :
ligne 6 : Si la condition a < b est vérifié, alors (ligne 8 : afficher a est moins grand que b). Sinon, (ligne 10 : afficher plutôt a est plus grand que b). On voit bien que la condition booléenne (a < b) est vérifiée. a est effectivement moins gtrand que b, d' où l' affichage du premier bloc d' instructions : ce bloc va de ligne 7 à ligne 9. En fait, l'instruction de la ligne 8.
On appelle bloc d' instructions, une ensemble d' instructions contenues entre deux accolades (ouverte { et fermée }). Habituez-vous à l' expression bloc d' instructions. Je vais souvent l' utiliser à partir de maintenant.
Sachez aussi qu' un bloc d' instructions peut lui aussi contenir un bloc d' instructions qui à son tour, peut en contenir. Ainsi de suite...
 EXEMPLE 2 : 

1.     public class Conditionnelle2
2.     {
3.          public static void main (String [] args)
4.          {
5.               int a = 33, b = 22;
6.               if(a < b)
7.               {
8.                    System.out.println("a est moins grand que b");
9.               }
10.              else
11.              {
12.                   System.out.println("a est plus grand que b");                      
13.              }
14.         }
15.    }
compilez puis exécutez ce programme, il sera affiché : a est plus grand que b

En effet, la structure conditionnelle s' explique ainsi :
ligne 6 : Si la condition a < b est vérifié, alors (ligne 8 : afficher a est moins grand que b). Sinon, (ligne 10 : afficher plutôt a est plus grand que b). On voit bien que la condition booléenne (a < b) n' est pas vérifiée. a est effectivement plus gtrand que b, d' où l' affichage du deuxième bloc d' instructions : ce bloc va de ligne 11 à ligne 13.
Sachez deux choses à propos de la structure onditionnelle if.
1. On peut construire la structure if sans le else. Cela dit, si la condition n' est pas vérifiée, il ne se passe rien. Ce qui n' a rien d' anormal. Il peut très arriver que vous ne vouliez pas qu' il se passe quelque chose si cette condition n' est pas vérifié.
2. Sachez que si le bloc d' instructions qui suit le if (ou même le else), ne contient qu' une seule instruction, alors, les accolades ne sont pas obligatoire. Mais personnellement, par expérience, je vous conseille d' éviter cette façon de faire. Avec un programme étendu à une centaine de lignes par exemple, il peut vous arriver d' ajouter une instructions et oublier de mettre les accolades. Et un message d' erreur ne sera pas forcément renvoyé pour vous permettre de corriger. Pensez-y !
 EXEMPLE 3 : 

1.     public class Conditionnelle3
2.     {
3.          public static void main (String [] args)
4.          {
5.               String moment = "matin";
6.               if(moment == "matin")
7.               {
8.                    System.out.println("Bonjour !");
9.               }
10.              else if (moment == "soir")
11.              {
12.                   System.out.println("Bonsoir !");                      
13.              }
14.              else
15.              {
16.                   System.out.println("Bonne nuit !");
17.              }
18.         }
19.    }
compil puis exéc donnent : Bonjour !
 EXEMPLE 4 : 

1.     public class Conditionnelle3
2.     {
3.          public static void main (String [] args)
4.          {
5.               String moment = "soir";
6.               if(moment == "matin")
7.               {
8.                    System.out.println("Bonjour !");
9.               }
10.              else if (moment == "soir")
11.              {
12.                   System.out.println("Bonsoir !");                      
13.              }
14.              else
15.              {
16.                   System.out.println("Bonne nuit !");
17.              }
18.         }
19.    }
compil puis exéc donnent : Bonsoir !
 EXEMPLE 5 : 

1.     public class Conditionnelle5
2.     {
3.          public static void main (String [] args)
4.          {
5.               String moment = "nuit";
6.               if(moment == "matin")
7.               {
8.                    System.out.println("Bonjour !");
9.               }
10.              else if (moment == "soir")
11.              {
12.                   System.out.println("Bonsoir !");                      
13.              }
14.              else
15.              {
16.                   System.out.println("Bonne nuit !");
17.              }
18.         }
19.    }
compil puis exéc donnent : Bonne nuit !

Explications : La structure if...else if...else permet une alternative. Si la condition première condition booléenne est vérifiée (ligne 6), alors exécution du premier bloc (lignes 7 à 9), d' où l' affichage de l' exemple 3. Et si la deuxième condition booléenne est vérifiée (ligne 10) alors, le 2ème bloc est exécuté (lignes 11 à 12). Si ces deux conditions ne sont pas vérifiées, alors, le troisième bloc s' exécute.
De même que la structure if peut se construire sans le else, de même la structure if...else if... peut se construire sans le else.

Sachez aussi que l' on peut mettre autant de else if qu' on veut. if(condition 1)....else if(condition 2)....else if(condition 3).... else if(condition 4).............else if(condition n)...else...

Mais cette structure est parfois remplacée (lorsque cela est possible) par la structure switch qui a l' avantage d' être plus lisible. Voyons ça.
 EXEMPLE 6 : 

1.     public class Conditionnelle6
2.     {
3.          public static void main (String [] args)
4.          {
5.               char sexe = 'H';
6.               switch(sexe)
7.               {
8.                    case 'H':     
9.                    System.out.println("Vous êtes un homme");
10.                   break;
11.              
12.                   case 'F':
13.                   System.out.println("Vous êtes une femme");
14.                   break;
15.              
16.                   default :
17.                   System.out.println("comprends pas ton sexe");
18.                   break;
19.                                       
20.              }
21.         }
22.    }
Compilez, exécutez, affichage : Vous êtes un homme

La structure switch permet de faire un choix selon la valeur de la variable dans les parenthèses. Ici, la variable est sexe. Ligne 8 = dans le cas où sexe ='H', ligne 9 : alors afficher "Vous êtes un homme" ligne 10 : Puis sortir de la structure. Explication similaire lignes 12 à 14. La ligne 16 signifie, à défaut des autres cas (Ici, sexe = 'H' et sexe = 'F'), ligne 17 : alors afficher "Comprends pas ton sexe" puis sortir de la structure.

On aurait pu écrire avec if, else if, et else. If(sexe == 'H') ..... else if(sexe = 'F')....else.... Mais le programme aurait testé toutes les situations. Imaginez 10 fois else if. Même si le premier else if correspond à la réalité actuelle, le programme regardera aussi les 9 autres cas. Alors qu' avec un switch, la programme va directement exécuter le cas où la condition est vérifié. Puis exécute la ou les instructions correspondantes. Puis le programme sort de la boucle grâce à l' instruction break.
La question qui se pose est certainement de savoir pourquoi n' utilise-t-on pas toujours le switch plutôt que le if else ? Réponse : la variable entre parenthèses du switch doit être de type int ou de type dont la conversion en int se fait de façon implicite. Ce sont les types char, byte et short.
Rumeur : la prochaine version de java admettra le type String comme variable sur lequel se repose le choix switch.
Ce n' est qu' une rumeur. Reste à vérifier.
Dans la pratique, la plupart de temps, les structures de contrôle sont souvent imbriqués ou multiples. Nous le verrons dans les exercices corrigés.

← (précédent) A.7 Les structures de contrôle (1) : For - While - Do...While
A.9 Les tableaux (1) : déclaration, affection, taille.
Accueil S O M M A I R E

A.8 Les structures de contrôle (2) : if - if...else - else if - switch