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 de lo contrario... 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 declaración de cambio permite a un programa la capacidad de comparar el valor de un expresión a una lista de valores alternativos. Por ejemplo, imagina que tienes un menú desplegable que contiene los números del 1 al 4. Dependiendo de qué número se elija, 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");
instagram viewer

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 parte superior variable viene después, 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 esperas que pase es ver un caja de diálogo diciendo "Usted eligió el número 1", pero debido a que no hay una declaración de ruptura que coincida con la primera etiqueta de caso, el código en la segunda etiqueta de 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 Instrumentos de cuerda en declaraciones 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 etiqueta de caso pueden estar en minúsculas.

Cosas para recordar sobre la declaración de cambio

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

• El valor al lado de la etiqueta del caso no puede ser una variable. Tiene que ser una expresión constante (por ejemplo, un literal int, un literal char).

• Los valores de las expresiones constantes en todas las etiquetas de caso deben ser diferentes. Lo siguiente daría lugar a un error en tiempo de compilación:

interruptor (menuChoice)
{
caso 323:
JOptionPane.showMessageDialog (nulo, "Usted eligió la opción 1.");
descanso;
caso 323:
JOptionPane.showMessageDialog (nulo, "Usted eligió la opción 2");
descanso;

• Solo puede haber una etiqueta predeterminada en una declaración de cambio.

• Cuando utilice un objeto para la instrucción de cambio (por ejemplo, Cadena, Entero, Carácter) asegúrese de que no sea nulo. Un objeto nulo generará un error de tiempo de ejecución cuando se ejecute la instrucción switch.