↑
CHAPITRE 3.1

Les conditions

Utiliser if/else et switch pour prendre des décisions dans vos programmes
Dans cette section, vous allez apprendre à utiliser les structures conditionnelles en Java. Les conditions permettent à votre programme de prendre des décisions et d'exécuter différents blocs de code selon certaines conditions. Vous découvrirez les instructions 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");
Recommandation : Utilisez toujours les accolades, même pour une seule instruction. C'est plus sûr et plus lisible.

đź”— 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
Conseil pratique : Testez toujours vos conditions avec différentes valeurs pour vous assurer qu'elles fonctionnent comme prévu. Utilisez des valeurs limites (0, -1, valeurs maximales) pour tester les cas limites.

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
Important : Oublier 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"
Note : Avec cette syntaxe, pas besoin de 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
Conseil pratique : Utilisez 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é.