if, else, et switch, qui sont fondamentales pour créer des programmes interactifs et intelligents.
3.1Les conditions
3.1.1 – if / else
Les instructions if et else permettent d'exécuter du code conditionnellement. C'est la structure de contrôle la plus fondamentale en programmation. Elle permet à votre programme de prendre des décisions basées sur des conditions.
🔍 Structure de base : if
L'instruction if exécute un bloc de code seulement si une condition est vraie :
Syntaxe de base :
if (condition) {
// Code exécuté si la condition est vraie
}
Exemple :
int age = 20;
if (age >= 18) {
System.out.println("Vous ĂŞtes majeur.");
}
📝 Exemples pratiques
Exemple 1 : Vérifier un nombre positif
int nombre = 10;
if (nombre > 0) {
System.out.println("Le nombre est positif.");
}
Exemple 2 : Vérifier l'égalité
String motDePasse = "secret123";
if (motDePasse.equals("secret123")) {
System.out.println("Accès autorisé.");
}
🔄 Structure if-else
L'instruction else permet d'exécuter un bloc de code alternatif si la condition est fausse :
Syntaxe :
if (condition) {
// Code exécuté si la condition est vraie
} else {
// Code exécuté si la condition est fausse
}
Exemple :
int age = 15;
if (age >= 18) {
System.out.println("Vous ĂŞtes majeur.");
} else {
System.out.println("Vous ĂŞtes mineur.");
}
🔀 Structure if-else if-else
Vous pouvez enchaîner plusieurs conditions avec else if :
Syntaxe :
if (condition1) {
// Code si condition1 est vraie
} else if (condition2) {
// Code si condition1 est fausse mais condition2 est vraie
} else if (condition3) {
// Code si condition1 et condition2 sont fausses mais condition3 est vraie
} else {
// Code si toutes les conditions sont fausses
}
Exemple : Note scolaire
int note = 15;
if (note >= 16) {
System.out.println("Très bien !");
} else if (note >= 14) {
System.out.println("Bien !");
} else if (note >= 12) {
System.out.println("Assez bien.");
} else if (note >= 10) {
System.out.println("Passable.");
} else {
System.out.println("Insuffisant.");
}
⚡ if sans accolades (une seule instruction)
Si le bloc ne contient qu'une seule instruction, vous pouvez omettre les accolades :
Avec accolades (recommandé) :
if (age >= 18) {
System.out.println("Majeur");
}
Sans accolades (possible mais moins lisible) :
if (age >= 18)
System.out.println("Majeur");
đź”— Conditions multiples
Vous pouvez combiner plusieurs conditions avec les opérateurs logiques :
Exemple : Conditions avec && (ET)
int age = 25;
boolean aPermis = true;
if (age >= 18 && aPermis) {
System.out.println("Vous pouvez conduire.");
}
Exemple : Conditions avec || (OU)
String jour = "samedi";
if (jour.equals("samedi") || jour.equals("dimanche")) {
System.out.println("C'est le week-end !");
}
Exemple : Condition avec ! (NON)
boolean estFerme = false;
if (!estFerme) {
System.out.println("Le magasin est ouvert.");
}
📊 Opérateur ternaire (condition ? valeur1 : valeur2)
L'opérateur ternaire est une façon concise d'écrire un if-else simple :
Syntaxe :
variable = condition ? valeurSiVrai : valeurSiFaux;
Exemple :
int age = 20;
String statut = (age >= 18) ? "Majeur" : "Mineur";
System.out.println(statut); // Affiche "Majeur"
// Équivalent à :
String statut;
if (age >= 18) {
statut = "Majeur";
} else {
statut = "Mineur";
}
💡 Points clés à retenir
- if : Exécute du code si une condition est vraie
- else : Exécute du code si la condition est fausse
- else if : Permet d'enchaîner plusieurs conditions
- Accolades : Toujours utiliser les accolades, mĂŞme pour une seule instruction
- Conditions multiples : Utiliser && (ET), || (OU), ! (NON)
- Opérateur ternaire : Syntaxe concise pour if-else simple
- Ordre important : Les conditions sont évaluées de haut en bas
3.1.2 – switch
L'instruction switch permet de sélectionner un bloc de code à exécuter parmi plusieurs options possibles. C'est une alternative élégante à une longue série de if-else if quand vous testez la même variable contre plusieurs valeurs.
🔀 Structure de base : switch
Syntaxe :
switch (variable) {
case valeur1:
// Code si variable == valeur1
break;
case valeur2:
// Code si variable == valeur2
break;
default:
// Code si aucune valeur ne correspond
}
Exemple : Jour de la semaine
int jour = 3;
switch (jour) {
case 1:
System.out.println("Lundi");
break;
case 2:
System.out.println("Mardi");
break;
case 3:
System.out.println("Mercredi");
break;
default:
System.out.println("Autre jour");
}
⚠️ Importance du break
Le mot-clé break est crucial dans un switch. Sans break, l'exécution continue dans le cas suivant (fall-through) :
Exemple : Sans break (fall-through)
int jour = 1;
switch (jour) {
case 1:
System.out.println("Lundi"); // Exécuté
// Pas de break !
case 2:
System.out.println("Mardi"); // Aussi exécuté !
case 3:
System.out.println("Mercredi"); // Aussi exécuté !
break;
}
// Affiche :
// Lundi
// Mardi
// Mercredi
break est une erreur courante. Utilisez toujours break sauf si vous voulez intentionnellement un fall-through.
📝 Exemples pratiques
Exemple 1 : Menu de sélection
int choix = 2;
switch (choix) {
case 1:
System.out.println("Vous avez choisi l'option 1");
break;
case 2:
System.out.println("Vous avez choisi l'option 2");
break;
case 3:
System.out.println("Vous avez choisi l'option 3");
break;
default:
System.out.println("Choix invalide");
}
Exemple 2 : Note avec lettres
char note = 'B';
switch (note) {
case 'A':
System.out.println("Excellent !");
break;
case 'B':
System.out.println("Très bien !");
break;
case 'C':
System.out.println("Bien.");
break;
case 'D':
System.out.println("Passable.");
break;
case 'F':
System.out.println("Insuffisant.");
break;
default:
System.out.println("Note invalide");
}
🔄 Fall-through intentionnel
Parfois, vous voulez que plusieurs cas exécutent le même code. Dans ce cas, vous pouvez omettre le break intentionnellement :
Exemple : Groupes de jours
int jour = 2; // Mardi
switch (jour) {
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("Jour de semaine");
break;
case 6:
case 7:
System.out.println("Week-end");
break;
default:
System.out.println("Jour invalide");
}
🆕 Switch avec expressions (Java 14+)
Depuis Java 14, switch peut être utilisé comme une expression qui retourne une valeur :
Exemple : Switch expression
int jour = 3;
String nomJour = switch (jour) {
case 1 -> "Lundi";
case 2 -> "Mardi";
case 3 -> "Mercredi";
case 4 -> "Jeudi";
case 5 -> "Vendredi";
case 6 -> "Samedi";
case 7 -> "Dimanche";
default -> "Jour invalide";
};
System.out.println(nomJour); // Affiche "Mercredi"
break !
📊 Comparaison : if-else vs switch
| Critère | if-else | switch |
|---|---|---|
| Conditions | Toute expression booléenne | Valeurs discrètes (int, char, String, enum) |
| Comparaisons | ==, !=, <, >, etc. | Uniquement == (égalité) |
| Plages de valeurs | Facile (age > 18) | Difficile (nécessite plusieurs case) |
| Lisibilité | Bonne pour peu de cas | Meilleure pour beaucoup de cas |
| Performance | Évalue toutes les conditions | Peut être optimisé par le compilateur |
💡 Points clés à retenir
- switch : Sélectionne parmi plusieurs valeurs discrètes
- case : Définit une valeur à tester
- break : Essentiel pour éviter le fall-through (sauf intentionnel)
- default : Cas par défaut si aucune valeur ne correspond
- Types supportés : int, char, String, enum (et leurs wrappers)
- Fall-through : Utile pour grouper plusieurs cas
- Switch expression : Syntaxe moderne (Java 14+) qui retourne une valeur
switch quand vous testez une variable contre plusieurs valeurs discrètes. Utilisez if-else pour des conditions complexes, des plages de valeurs, ou des comparaisons autres que l'égalité.