Dans mon code, le programme fait quelque chose en fonction du texte entré par l'utilisateur. Mon code ressemble à:
switch (name) {
case text1: {
//blah
break;
}
case text2: {
//blah
break;
}
case text3: {
//blah
break;
}
case text4: {
//blah
break;
}
Cependant, le code à l'intérieur des cas text1
et text4
est le même. Je me demandais donc s'il me serait possible de mettre en œuvre quelque chose comme
case text1||text4: {
//blah
break;
}
Je sais que l' ||
opérateur ne fonctionnera pas dans l'instruction case, mais y a-t-il quelque chose de similaire que je peux utiliser.
java
switch-statement
Ankush
la source
la source
Réponses:
Vous pouvez utiliser les deux
CASE
instructions comme suit.VOIR CET EXEMPLE: L'exemple de code calcule le nombre de jours dans un mois particulier:
Voici la sortie du code:
TOMBER DANS:
EXEMPLE DE CODE:
Voici la sortie du code:
Utilisation de chaînes dans les instructions switch
La sortie de ce code est 8.
DE Java Docs
la source
break
sont fondamentalement ajoutés au bloc de cas suivant qui est visuellement en dessous, donc tombent .vous pouvez faire comme:
la source
Les
case
valeurs sont simplement des points "goto" sans code qui peuvent partager le même point d'entrée:Notez que les accolades sont redondantes.
la source
Fais juste
la source
Avec l'intégration de JEP 325: Switch Expressions (Preview) dans les versions à accès anticipé JDK-12, on peut désormais utiliser la nouvelle forme de l'étiquette de commutateur comme: -
ou pour reformuler la démo d' une des réponses , quelque chose comme: -
Voici comment vous pouvez l'essayer - Compilez une fonction d'aperçu JDK12 avec Maven
la source
Les crochets ne sont pas nécessaires. Fais juste
Si quelqu'un est curieux, cela s'appelle un casse-tête. La capacité de le faire est la raison pour laquelle il
break;
est nécessaire de mettre fin aux déclarations de cas. Pour plus d'informations, consultez l'article wikipedia http://en.wikipedia.org/wiki/Switch_statement .la source
Les
fallthrough
réponses des autres sont bonnes.Cependant, une autre approche serait d'extraire des méthodes du contenu de vos déclarations de cas, puis d'appeler simplement la méthode appropriée à partir de chaque cas.
Dans l'exemple ci-dessous, la casse 'text1' et la casse 'text4' se comportent de la même manière:
Personnellement, je trouve ce style d'écriture des déclarations de cas plus facile à maintenir et légèrement plus lisible, surtout lorsque les méthodes que vous appelez ont de bons noms descriptifs.
la source
text1
ettext4
FAIT PRESQUE CERTAINEMENT la même chose, indépendamment d'un changement futur. S'ils doivent toujours être liés, faire un changement dans le cas detext1
(c'est-à-dire changer la méthode qu'il appelle) nécessiterait un changement detext4
. Dans ce cas, il n'est évidemment pas plus maintenable. Ça dépend de la situation.L'approche de chute est la meilleure que je ressens.
la source
Vous pouvez utiliser:
la source
Les valeurs de cas sont juste des points "goto" sans code qui peuvent partager le même point d'entrée:
Notez que les accolades sont redondantes.
la source
JEP 354: Switch Expressions (Preview) dans JDK-13 et JEP 361: Switch Expressions (Standard) dans JDK-14 étendra l' instruction switch afin qu'elle puisse être utilisée comme expression .
Maintenant vous pouvez:
case L ->
):La démonstration d' une des réponses pourrait donc ressembler à ceci:
la source