Je suis un peu perplexe pourquoi tous les cas sont exécutés ici, même ceux qui ne correspondent pas si je supprime l'instruction break ici:

int i = 0;
    switch ( i ) {
        case 0: System.out.print (i) ;
        case 1: System.out.print (i) ;
        case 2: System.out.print (i) ;
        case 3: System.out.print (i) ;
        default : System.out.print (i) ;
    }

Ce code imprime 5 fois la valeur i. Si je devais ajouter une pause après le cas 0, il imprime juste une fois la valeur.

En lisant la documentation et la description des fonctions dans certains livres, je m'attendais à ce qu'il n'imprime que la casse correspondante.

Est-ce parce que c'est en quelque sorte énuméré? Je suis désolé de ne pas pouvoir trouver une meilleure explication et j'ai cherché de manière approfondie, alors j'ai pensé que cela avait déjà été demandé et que je ne suis pas doué pour la recherche, ou que c'est trop basique.

0
Olli 26 avril 2020 à 11:09

2 réponses

Meilleure réponse

Dans les instructions java switch, une fois qu'il correspond à un case, toutes les clauses case après la clause correspondante sont exécutées séquentiellement. Cette chute est le comportement attendu. Si vous avez besoin d'arrêter cela, alors break à chaque case de sorte que, une fois qu'un case est mis en correspondance, il n'exécutera que case, puis interrompra le {{ Bloc X7}}.

Si votre entrée ne correspond à aucun des blocs case, le cas default est exécuté.

Ceci est du javadoc officiel

Les instructions break sont nécessaires car sans elles, les instructions des blocs de commutation échouent: Toutes les instructions après l'étiquette de cas correspondante sont exécutées dans l'ordre, quelle que soit l'expression des étiquettes de cas suivantes, jusqu'à ce qu'une instruction break soit rencontrée.

Essayez le code avec différentes valeurs i et vous verrez par vous-même comment le switch se comporte.

1
Klaus 28 mai 2020 à 16:31

Vous devez entrer une commande break après chaque lecture, afin de quitter switch!

int i = 0;
    switch ( i ) {
        case 0: System.out.print (i) ;
        break ;
        case 1: System.out.print (i) ;
        break ;
        case 2: System.out.print (i) ;
        break ;
        case 3: System.out.print (i) ;
        break ;
        default : System.out.print (i) ;
       break ;
    }

Le switch entre là où la condition est vraie, après cela, il exécute toutes les lignes de code qui suivent. Witout break il ne quittera pas et exécutera les lignes de code suivantes après.

3
Pluto 28 mai 2020 à 17:01