1. Séquence des ifdéclarations

Parfois, un programme doit effectuer de nombreuses actions différentes en fonction de la valeur d'une variable ou de la valeur d'une expression.

Disons que notre tâche ressemble à ceci :

  • Si la température est supérieure à 20degrés, alors mettez une chemise
  • Si la température est supérieure à 10degrés et inférieure à (ou égale à) 20, alors enfilez un pull
  • Si la température est supérieure à 0degrés et inférieure à (ou égale à) 10, alors enfilez un imperméable
  • Si la température est inférieure à 0degrés, mettez un manteau.

Voici comment cela peut être représenté dans le code :

int temperature = 9;

if (temperature > 20)
   System.out.println("put on a shirt");
else // Here the temperature is less than (or equal to) 20
{
   if (temperature > 10)
      System.out.println("put on a sweater");
   else // Here the temperature is less than (or equal to) 10
   {
      if (temperature > 0)
         System.out.println("put on a raincoat");
      else // Here the temperature is less than 0
         System.out.println("put on a coat");
   }
}

If-elseles instructions peuvent être imbriquées les unes dans les autres. Cela permet d'implémenter une logique assez complexe dans un programme.

Mais l'exemple ci-dessus est également intéressant dans la mesure où nous pouvons rendre le code un peu plus simple en omettant les accolades :

int temperature = 9;

if (temperature > 20)
   System.out.println("put on a shirt");
else // Here the temperature is less than (or equal to) 20
   if (temperature > 10)
      System.out.println("put on a sweater");
   else // Here the temperature is less than (or equal to) 10
      if (temperature > 0)
         System.out.println("put on a raincoat");
      else // Here the temperature is less than 0
         System.out.println("put on a coat");

Cependant, les programmeurs écrivent généralement cette construction un peu différemment :

int temperature = 9;

if (temperature > 20)
   System.out.println("put on a shirt");
else if (temperature > 10) // Here the temperature is less than (or equal to) 20
   System.out.println("put on a sweater");
else if (temperature > 0) // Here the temperature is less than (or equal to) 10
   System.out.println("put on a raincoat");
else // Here the temperature is less than 0
   System.out.println("put on a coat");

Ces trois exemples sont équivalents.


2. Nuances du elsebloc

Un point important :

Si vous n'utilisez pas d'accolades dans une if-elseconstruction, alors le elsefait référence au précédent le plus proche if.

Exemple:

Notre code Comment cela fonctionnera-t-il
int age = 65;

if (age < 60)
   if (age > 20)
      System.out.println("You must work");
else
   System.out.println("You don't have to work");
int age = 65;

if (age < 60)
{
   if (age > 20)
     System.out.println("You must work");
   else
     System.out.println("You don't have to work");
}

Si vous regardez le code sur la gauche, il semble que la sortie d'écran sera "Vous n'avez pas à travailler". Mais ce n'est pas le cas. En réalité, le elseblocage et l'énoncé « Vous n'êtes pas obligé de travailler » sont associés au deuxième ifénoncé (le plus proche).

Dans le code de droite, les associés ifet elsesont surlignés en rouge. De plus, les accolades sont placées sans ambiguïté, montrant clairement quelles actions seront effectuées. La chaîne Vous n'avez pas à travailler n'est-elle jamais affichée lorsque ageest supérieur à 60?



3. Exemple d'utilisation d'une if-elsedéclaration

Puisque nous avons if-elsesi bien exploré l'énoncé, donnons un exemple :

import java.util.Scanner;
public class Solution {
   public static void main(String[] args)
   {
     Scanner console = new Scanner(System.in); // Create a Scanner object
     int a = console.nextInt(); // Read the first number from the keyboard
     int b = console.nextInt(); // Read the second number from the keyboard
     if (a < b)                   // If a is less than b
       System.out.println(a);     // we display a
     else                         // otherwise
       System.out.println(b);     // we display b
   }
}
Affichage du minimum de deux nombres