Chargement...

switch en Java

Rangez le nombre entier 2 sous le nom choice. Construisez un switch qui liste case 1, case 2 et case 3, chacun avec son propre println, plus un default. Quand vous compilez et lancez, l'écran doit montrer mid — une seule ligne — parce que case 2 correspond. C'est ce que cette page enseigne : une valeur, plusieurs étiquettes fixes, un chemin choisi.

Une valeur, plusieurs étiquettes fixes

Créez un petit fichier de programme nommé Dial.java. La public class de la première ligne doit correspondre au nom du fichier : public class Dial. Ne laissez pas une ancienne classe Gate ou Mint dans ce fichier ; le compilateur attend que le nom de classe et le nom de fichier concordent.
Dans main, stockez un nombre entier avant le switch :
int choice = 2;
Cette ligne n'écrit rien. Elle donne seulement au nom choice la valeur 2. choice commence par un c minuscule. Il n'y a pas de guillemets autour de 2. Le point-virgule termine la ligne de stockage. Ensuite vient le switch lui-même :
switch (choice) {
case 1:
System.out.println("low");
break;
case 2:
System.out.println("mid");
break;
case 3:
System.out.println("high");
break;
default:
System.out.println("none");
break;
}
Le mot switch est en minuscules. À l'intérieur des parenthèses se trouve le nom choice — la valeur que Java comparera à chaque étiquette case. Chaque ligne case se termine par un deux-points, pas par un point-virgule. Sous case 2 se trouve System.out.println("mid"); puis le mot break et un point-virgule. Quand choice contient 2, Java entre dans case 2, affiche mid, rencontre break et quitte tout le switch. case 3 et default ne s'exécutent pas sur ce tour. Enregistrez le fichier avant de compiler.

Programme qui affiche mid

Voici la version que vous compilez en premier. choice vaut 2, donc l'étiquette qui correspond est case 2.

choice vaut 2

java
public class Dial {
    public static void main(String[] args) {
        int choice = 2;
        switch (choice) {
            case 1:
                System.out.println("low");
                break;
            case 2:
                System.out.println("mid");
                break;
            case 3:
                System.out.println("high");
                break;
            default:
                System.out.println("none");
                break;
        }
    }
}

Depuis le dossier qui contient Dial.java, lancez javac Dial.java. Quand les accolades, les parenthèses et les deux-points concordent, javac n'écrit aucune ligne de lui-même. Ensuite lancez java Dial — pas java Dial.java. Laissez de côté l'extension .java sur la deuxième commande. Les deux mêmes commandes fonctionnent sous Windows et sous macOS ; cette page ne dépend pas d'une orthographe d'interpréteur différente pour l'un ou l'autre système. Le programme doit afficher mid et s'arrêter. Il ne doit pas attendre que vous tapiez. Si le terminal attend une saisie clavier, un appel nextLine d'un exercice plus ancien est encore dans le fichier. Supprimez cet appel et gardez le int plus le switch ci-dessus. Une mauvaise ligne à l'écran ne signifie pas que vous devez réinstaller le JDK.

Pourquoi mid et pas low ou high ? Parce que la valeur entre parenthèses était 2, et case 2 est l'étiquette qui correspond. Java n'affiche pas le chiffre 2 sur cette exécution, sauf si vous écrivez un println pour ce chiffre. Il affiche ce que println exécute sous le case correspondant. Les parenthèses tiennent la valeur comparée. Chaque étiquette case est ici un nombre entier fixe. break termine le switch pour que les cases suivants restent silencieux. default attend les valeurs qui ne correspondent à aucun case — il reste inutilisé tant que choice vaut 2.

Quand aucun case ne correspond

Changez uniquement la valeur stockée :
int choice = 9;
Laissez la structure du switch telle quelle. Maintenant aucun de case 1, case 2 ou case 3 ne correspond. Java passe à default et exécute System.out.println("none");. L'écran doit montrer none, une seule ligne.

choice vaut 9

java
public class Dial {
    public static void main(String[] args) {
        int choice = 9;
        switch (choice) {
            case 1:
                System.out.println("low");
                break;
            case 2:
                System.out.println("mid");
                break;
            case 3:
                System.out.println("high");
                break;
            default:
                System.out.println("none");
                break;
        }
    }
}

Compilez et lancez à nouveau : javac Dial.java, puis java Dial. Vous devez voir none. Vous n'avez pas réécrit les lignes case — seule la valeur sous choice a changé. Après avoir vu none, vous pouvez remettre int choice = 2; pour revenir à la première démo. Les deux versions sont du Java valide. Elles enseignent la même forme de switch avec un case correspondant et avec default.

Relisez une fois l'exécution de default dans l'ordre. choice contient 9. switch (choice) commence. case 1 ne correspond pas. case 2 ne correspond pas. case 3 ne correspond pas. Le contrôle continue à default. println("none") s'exécute. Une ligne à l'écran. Le chiffre 9 lui-même n'apparaît jamais, sauf si vous l'imprimez exprès.

break arrête les cases suivants

break n'est pas une décoration. Sans lui, Java peut continuer à exécuter les lignes du case suivant après une correspondance. Cette chute (fall-through) surprend les débutants. Voici une courte démo qui oublie break volontairement après case 2 — gardez-la dans un essai séparé, ou lisez-la attentivement avant de la compiler comme fichier principal :

break manquant après case 2

java
public class Dial {
    public static void main(String[] args) {
        int choice = 2;
        switch (choice) {
            case 1:
                System.out.println("low");
                break;
            case 2:
                System.out.println("mid");
            case 3:
                System.out.println("high");
                break;
            default:
                System.out.println("none");
                break;
        }
    }
}

Avec choice égal à 2 et sans break sous case 2, l'écran peut montrer mid sur une ligne et high sur la suivante. case 2 a correspondé, a affiché mid, puis est tombé dans case 3 et a affiché high. Les premières démos d'enseignement gardent break sous chaque case pour que chaque chemin écrive exactement une ligne. Remettez break avant de traiter Dial.java à nouveau comme le fichier de leçon conservé.

Règles qui gardent les étiquettes claires

Les parenthèses autour de la valeur commutée sont obligatoires. Écrire switch choice { … } sans parenthèses fait échouer javac. Chaque étiquette case de cette page est une constante entière : case 1:, case 2:, case 3:. Un deux-points suit l'étiquette. Écrire case 2; avec un point-virgule au lieu d'un deux-points n'est pas la forme que cette leçon compile. default n'a pas de valeur après lui — seulement default: puis les lignes pour « rien n'a correspondu ».

switch n'est pas le même outil que if. if (ready) pose une question vrai-ou-faux. switch (choice) fait correspondre une valeur à une liste d'étiquettes fixes. N'écrivez pas switch (ready) avec un boolean en attendant la même forme de leçon que Gate.java. Gardez les démos de cette page sur un int nommé choice et des étiquettes case entières. Les comparaisons comme if (score > 10) appartiennent encore à if quand vous avez besoin d'une plage ; switch brille quand les valeurs sont discrètes et connues à l'avance.

Une confusion fréquente est d'imprimer la syntaxe elle-même : System.out.println("switch (choice)");. Cela écrit les caractères switch (choice). Cela ne choisit aucun case. Une autre confusion est de laisser une démo if / else de Gate dans le même main et de se demander pourquoi l'écran montre pass au lieu de mid. Le main de cette session ne doit contenir que le int et le switch.

📊 choice et l'écran

choice Écran
1 low
2 mid
3 high
9 none

Utilisez le tableau comme vérification après une exécution, pas à la place d'une exécution. choice 2 avec la première démo affiche mid. choice 9 avec la deuxième démo affiche none. choice 1 affiche low. choice 3 affiche high. Si mid et high apparaissent tous les deux pour choice 2, un break manque sous case 2 — corrigez les break plutôt que de réinstaller Java.

Ce que vous pouvez faire maintenant

Vous pouvez stocker un nombre entier, le placer dans switch (…), et donner à chaque valeur fixe son propre case avec un println et un break. Quand un case correspond, cette ligne s'exécute ; quand rien ne correspond, default s'exécute. La page suivante est for, où le même bloc de lignes peut s'exécuter encore et encore pendant qu'un compteur change.

🧠 Testez Vos Connaissances

Prêt à Commencer

Testez Vos Connaissances

Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet

❓
6
Questions
🎯
70%
Pour Réussir
♾️
∞
Temps
🔄
∞
Tentatives

📝 Instructions

  • Lisez chaque question attentivement
  • Sélectionnez la meilleure réponse pour chaque question
  • Vous pouvez refaire le quiz autant de fois que vous le souhaitez
  • Votre progression sera affichée en haut