En mi código, el programa hace algo dependiendo del texto ingresado por el usuario. Mi código se ve así:
switch (name) {
case text1: {
//blah
break;
}
case text2: {
//blah
break;
}
case text3: {
//blah
break;
}
case text4: {
//blah
break;
}
Sin embargo, el código dentro de los casos text1
y text4
es el mismo. Por lo tanto, me preguntaba si sería posible implementar algo como
case text1||text4: {
//blah
break;
}
Yo se que el ||
operador no funcionará en la declaración del caso, pero ¿hay algo similar que pueda usar?
java
switch-statement
Ankush
fuente
fuente
Respuestas:
Puede usar tener ambas
CASE
declaraciones de la siguiente manera.VER ESTE EJEMPLO: El ejemplo de código calcula la cantidad de días en un mes en particular:
Este es el resultado del código:
CAER A TRAVÉS:
CÓDIGO DE EJEMPLO:
Este es el resultado del código:
Usar cadenas en declaraciones de conmutador
La salida de este código es 8.
DE Java Docs
fuente
break
se añaden básicamente con el siguiente bloque de casos que está visualmente debajo, por lo tanto se caen .puedes hacer como:
fuente
Los
case
valores son simplemente puntos "goto" sin código que pueden compartir el mismo punto de entrada:Tenga en cuenta que las llaves son redundantes.
fuente
Solo haz
fuente
Con la integración de JEP 325: Expresiones de conmutador (Vista previa) en las compilaciones de acceso temprano de JDK-12, ahora se puede utilizar la nueva forma de la etiqueta del conmutador como:
o para reformular la demostración de una de las respuestas , algo como: -
Así es como puede probarlo: compile una función de vista previa JDK12 con Maven
fuente
Los corchetes son innecesarios. Solo haz
Si alguien tiene curiosidad, esto se llama un caso fallido. La capacidad de hacer esto es la razón por la cual
break;
es necesario finalizar las declaraciones de casos. Para obtener más información, consulte el artículo de wikipedia http://en.wikipedia.org/wiki/Switch_statement .fuente
Las
fallthrough
respuestas de otros son buenas.Sin embargo, otro enfoque sería extraer métodos del contenido de las declaraciones de su caso y luego simplemente llamar al método apropiado de cada caso.
En el siguiente ejemplo, tanto el caso 'text1' como el caso 'text4' se comportan igual:
Personalmente, creo que este estilo de redacción de declaraciones de casos es más fácil de mantener y un poco más legible, especialmente cuando los métodos que llama tienen buenos nombres descriptivos.
fuente
text1
ytext4
fácil de casi CIERTAMENTE hará lo mismo, independientemente de un cambio futuro. Si siempre deben estar vinculados, hacer un cambio en el caso detext1
(es decir, cambiar el método al que llama) requeriría un cambiotext4
. En este caso, obviamente no es más fácil de mantener. Depende de la situación.El enfoque fallido es el mejor que siento.
fuente
Puedes usar:
fuente
Los valores de los casos son simplemente puntos "goto" sin código que pueden compartir el mismo punto de entrada:
Tenga en cuenta que las llaves son redundantes.
fuente
JEP 354: Expresiones de cambio (Vista previa) en JDK-13 y JEP 361: Expresiones de cambio (Estándar) en JDK-14 extenderá la declaración de cambio para que pueda usarse como una expresión .
Ahora usted puede:
case L ->
):Entonces, la demostración de una de las respuestas podría verse así:
fuente