1. Instruction if else
Les programmes seraient de peu d’utilité s’ils faisaient toujours la même chose, indépendamment des circonstances extérieures. Un programme doit savoir s’adapter à des situations variées et effectuer certaines actions dans certains cas, d’autres — dans d’autres.
En Java, cela est réalisé à l’aide de l’instruction conditionnelle — les mots-clés if et else, qui permettent d’exécuter différents blocs d’instructions selon la véracité d’une condition.
L’instruction conditionnelle se compose de trois parties : la condition, la commande 1 et la commande 2. Si la condition est vraie, la commande 1 est exécutée ; sinon, la commande 2 est exécutée. Les commandes ne s’exécutent jamais simultanément. La forme générale de cette instruction est la suivante :
if (uslovie)
komanda1;
else
komanda2;
if-else
if se traduit par « si », et else par « sinon ». En langage naturel, on peut l’écrire ainsi :
Esli uslovie istinno, to
vypolnit’ komanda1;
inache
vypolnit’ komanda2;
if-else en langage naturel
Exemples :
// Le message suivant sera affiché à l’écran : Vous êtes encore un enfant
int age = 17;
if (age < 18)
System.out.println("Vous êtes encore un enfant");
else
System.out.println("Vous êtes déjà adulte");
// Le message suivant sera affiché à l’écran : Il fait doux
int temperature = 5;
if (temperature < 0)
System.out.println("Il gèle dehors");
else
System.out.println("Il fait doux");
// Le message suivant sera affiché à l’écran : Vous pouvez passer le permis
int age = 18;
if (age == 18)
System.out.println("Vous pouvez passer le permis");
else
System.out.println("Vous pouvez économiser pour une voiture");
2. Bloc d’instructions
Si, lorsque la condition est satisfaite (ou non), vous souhaitez que votre programme exécute plusieurs commandes, vous pouvez les regrouper dans un bloc d’instructions.
Pour regrouper des commandes dans un bloc, il faut les « envelopper » entre des accolades. Voici à quoi cela ressemble en général :
{
komanda1;
komanda2;
komanda3;
}
Un bloc peut contenir autant d’instructions que nécessaire, voire zéro.
Exemples combinant l’instruction if-else et un bloc d’instructions :
// Le message suivant sera affiché à l’écran : Tu es encore un enfant. Ne discute pas avec les adultes
int age = 17;
if (age < 18)
{
System.out.println("Tu es encore un enfant");
System.out.println("Ne discute pas avec les adultes");
}
else
{
System.out.println("Vous êtes déjà adulte");
System.out.println("Eh bien, quelle jeunesse");
}
// Le message suivant sera affiché à l’écran : Il fait doux
int temperature = 5;
if (temperature < 0)
{
System.out.println("Il gèle dehors");
System.out.println("Mets un bonnet");
}
else
System.out.println("Il fait doux");
// Un bloc d’instructions vide sera exécuté. Rien ne sera affiché à l’écran.
int age = 21;
if (age == 18)
System.out.println("Vous pouvez obtenir votre permis");
else
{
}
3. Syntaxe abrégée de l’instruction if
Si le code dans le bloc else est absent, on peut l’omettre. L’instruction if prend alors la forme suivante :
if (uslovie)
{
komanda1;
}
if
Exemple :
int age = 19;
if (age >= 18)
{
System.out.println("Vous êtes majeur !");
}
Comment cela fonctionne-t-il ?
Si la condition est vraie, le bloc de code est exécuté. Si elle est fausse, il ne se passe rien — le programme continue.
Le bloc else est présent dans le programme, mais il est vide (aucune instruction entre les accolades). Vous pouvez simplement le supprimer : cela ne changera rien au programme.
4. Combinaison de conditions : else if
Parfois, il ne s’agit pas seulement de « oui/non », mais de choisir parmi plusieurs options. L’enchaînement else if vient alors à la rescousse :
if (uslovie1)
{
// S’exécute si uslovie1 est vrai
}
else if (uslovie2)
{
// S’exécute si uslovie2 est vrai, et uslovie1 — faux
}
else
{
// S’exécute si aucune des conditions ci-dessus ne convient
}
Exemple :
int hour = 13;
if (hour < 12)
{
System.out.println("Bonjour !");
}
else if (hour < 18)
{
System.out.println("Bon après-midi !");
}
else
{
System.out.println("Bonsoir !");
}
Que se passe-t-il ici ?
- Si l’heure est inférieure à 12 — c’est le matin.
- Si elle est entre 12 et 18 — c’est l’après-midi.
- Si elle est supérieure — c’est le soir.
- Le programme ne choisit qu’UNE seule option ! Dès qu’une condition correspond, les autres ne sont même pas vérifiées.
5. Illustration schématique : organigramme de branchement
Voici à quoi cela ressemble sous forme d’organigramme :
Et s’il y a plusieurs conditions :
Cela rappelle beaucoup les embranchements dans les jeux de rôle sur table : tu vas à gauche — une chose, à droite — une autre, tout droit — encore autre chose !
6. Quelles conditions peut-on tester ?
Entre les parenthèses après if, il doit y avoir une expression LOGIQUE — dont le résultat est true ou false.
Opérateurs de comparaison principaux :
| Opérateur | Signification | Exemple |
|---|---|---|
|
Égal | |
|
Différent | |
|
Supérieur | |
|
Inférieur | |
|
Supérieur ou égal | |
|
Inférieur ou égal | |
Exemples de conditions :
if (number == 10)
if (age != 18)
if (temperature > 36)
if (balance <= 0)
Attention : = (un seul signe) — c’est l’affectation. == (deux signes) — c’est la comparaison. C’est l’une des erreurs les plus courantes chez les débutants ! Si vous écrivez par mégarde :
if (x = 5) // ERREUR !
— le compilateur vous le reprochera, et à juste titre.
7. Travailler avec les chaînes dans les conditions
La comparaison avec == en Java fonctionne correctement pour les nombres. Il est déconseillé de comparer des nombres à virgule avec ==, et il ne faut pas comparer des chaînes avec == — pour les chaînes, utilisez la méthode equals(), qui compare le contenu des chaînes (et non les références).
Nous reparlerons plus en détail des subtilités de la comparaison de chaînes plus tard. Voici comment comparer correctement des chaînes — exemple ci-dessous :
String password = console.nextLine();
if (password.equals("qwerty")) // on appelle la méthode equals() et on lui passe la deuxième chaîne
{
System.out.println("Vous êtes connecté !");
}
8. Particularités et nuances :
Accolades : nécessaires ou pas ?
S’il n’y a qu’une seule instruction après if ou else, on peut omettre les accolades :
if (age > 18)
System.out.println("Vous avez plus de 18 ans !");
// Mais il est plus sûr de TOUJOURS les écrire :
if (age > 18)
{
System.out.println("Vous avez plus de 18 ans !");
}
Conseil : écrivez-les toujours. Cela vous évitera de nombreuses erreurs, en particulier lors de l’extension du code.
Erreurs logiques : attention aux conditions !
Si vous écrivez ceci :
if (age > 18)
System.out.println("Vous avez plus de 18 ans !");
System.out.println("Bienvenue !");
Le compilateur comprendra ce code ainsi :
if (age > 18)
{
System.out.println("Vous avez plus de 18 ans !");
}
System.out.println("Bienvenue !");
La deuxième ligne sera toujours exécutée — les accolades sont nécessaires pour que les deux lignes fassent partie de la même « branche ».
GO TO FULL VERSION