Uso de la instrucción Switch para múltiples opciones en Java

Si su programa Java necesita elegir entre dos o tres acciones, un si, entonces, si no declaración será suficiente. sin embargo, el si, entonces, si no La declaración comienza a sentirse engorrosa cuando hay una serie de elecciones que un programa podría necesitar hacer. Solo hay tantos si no ... si declaraciones que desea agregar antes de que el código comience a verse desordenado. Cuando se requiere una decisión sobre varias opciones, use la instrucción switch.

La declaración de cambio

Una instrucción switch le permite al programa la capacidad de comparar el valor de una expresión con una lista de valores alternativos. Por ejemplo, imagine que tenía un menú desplegable que contenía los números del 1 al 4. Dependiendo del número elegido, desea que su programa haga algo diferente:

// supongamos que el usuario elige el número 4
int menuChoice = 4;
interruptor (menuChoice)

caso 1:
JOptionPane.showMessageDialog (nulo, "Usted eligió el número 1.");
descanso;
caso 2:
JOptionPane.showMessageDialog (nulo, "Usted eligió el número 2");
descanso;
caso 3:
JOptionPane.showMessageDialog (nulo, "Usted eligió el número 3.");
descanso;
// Esta opción se elige porque el valor 4 coincide con el valor de
// la variable menuChoise
caso 4: JOptionPane.showMessageDialog (nulo, "Usted eligió el número 4"); descanso;
defecto:
JOptionPane.showMessageDialog (nulo, "¡Algo salió mal!");
descanso;

Si observa la sintaxis de la instrucción switch, debería notar algunas cosas:

1. La variable que contiene el valor que debe compararse se coloca en la parte superior, dentro de los corchetes.

2. Cada opción alternativa comienza con una etiqueta de caso. El valor a comparar con la variable superior viene a continuación, seguido de dos puntos. Por ejemplo, el caso 1: es la etiqueta del caso seguido del valor 1; podría ser fácilmente el caso 123: o el caso -9 :. Puede tener tantas opciones alternativas como necesite.

3. Si observa la sintaxis anterior, se resalta la cuarta opción alternativa: la etiqueta del caso, el código que ejecuta (es decir, el JOptionPane) y una declaración de interrupción. La declaración de interrupción señala el final del código que debe ejecutarse. Si observa, verá que cada opción alternativa termina con una declaración de interrupción. Es muy importante recordar poner en la declaración de descanso. Considere el siguiente código:

 // supongamos que el usuario elige el número 1
int menuChoice = 1;
interruptor (menuChoice)
caso 1:
JOptionPane.showMessageDialog (nulo, "Usted eligió el número 1.");
caso 2:
JOptionPane.showMessageDialog (nulo, "Usted eligió el número 2");
descanso;
caso 3:
JOptionPane.showMessageDialog (nulo, "Usted eligió el número 3.");
descanso;
caso 4:
JOptionPane.showMessageDialog (nulo, "Usted eligió el número 4");
descanso;
defecto:
JOptionPane.showMessageDialog (nulo, "¡Algo salió mal!");
descanso;

Lo que espera que suceda es ver un cuadro de diálogo que dice "Usted eligió el número 1", pero debido a que no hay una declaración de ruptura que coincida con la etiqueta del primer caso, el código en la etiqueta del segundo caso también se ejecuta. Esto significa que también aparecerá el siguiente cuadro de diálogo que dice "Elegiste el número 2".

4. Hay una etiqueta predeterminada en la parte inferior de la declaración de cambio. Esto es como una red de seguridad en caso de que ninguno de los valores de las etiquetas del caso coincida con el valor que se compara con él. Es muy útil proporcionar una forma de ejecutar código cuando no se elige ninguna de las opciones deseadas.

Si siempre espera que se elija una de las otras opciones, puede omitir la etiqueta predeterminada, pero colocar una al final de cada declaración de cambio que cree es un buen hábito. Puede parecer poco probable que alguna vez se use, pero los errores pueden colarse en el código y puede ayudar a detectar un error.

Desde JDK 7

Uno de los cambios en la sintaxis de Java con el lanzamiento de JDK 7 es la capacidad de usar cadenas en las instrucciones de cambio. Ser capaz de comparar los valores de cadena en una declaración de cambio puede ser muy útil:

Nombre de cadena = "Bob";
switch (name.toLowerCase ())

caso "joe":
JOptionPane.showMessageDialog (nulo, "¡Buenos días, Joe!");
descanso;
caso "michael":
JOptionPane.showMessageDialog (nulo, "¿Cómo te va, Michael?");
descanso;
caso "bob":
JOptionPane.showMessageDialog (nulo, "¡Bob, mi viejo amigo!");
descanso;
caso "billy":
JOptionPane.showMessageDialog (nulo, "Buenas tardes Billy, ¿cómo están los niños?");
descanso;
defecto:
JOptionPane.showMessageDialog (nulo, "Encantado de conocerte, John Doe");
descanso;

Al comparar dos valores de cadena, puede ser mucho más fácil si se asegura de que todos estén en el mismo caso. El uso del método .toLowerCase significa que todos los valores de las etiquetas de mayúsculas y minúsculas pueden estar en minúsculas.

Cosas para recordar sobre la declaración de cambio

• El tipo de la variable a comparar debe ser un tipo char, byte, short, int, Character, Byte, Short, Integer, String o enum.