Array

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

Aerial view of a person working on a laptop next to scattered programming books.

Si su programa Java necesita elegir entre dos o tres acciones, una declaración si, entonces, de lo contrario será suficiente. Sin embargo, la declaración si, entonces, de lo contrario comienza a sentirse engorrosa cuando hay varias opciones que un programa podría necesitar tomar. Solo hay muchos más…if declaraciones que desea agregar antes de que el código comience a verse desordenado. Cuando se requiera una decisión en varias opciones, use la instrucción de cambio.

La instrucción Switch

Una instrucción de conmutación permite a un 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 de qué número se elija, desea que su programa haga algo diferente:

Video destacado
& lt; pre & gt; // let & amp; apos; s dice que el usuario elige el número 4 & lt; br & gt ;
int menuChoice = 4; & lt; br & gt ;
interruptor (menú Elección) & lt; br & gt ;
{& lt; br & gt ;
caso 1: & lt; br & gt ;
JOptionPane.showMessageDialog (nulo y entre comillas; usted eligió el número 1.& amp; quot;); & lt; br & gt ;
romper; & lt; br & gt ;
caso 2: & lt; br & gt ;
JOptionPane.showMessageDialog (nulo y entre comillas; usted eligió el número 2.& amp; quot;); & lt; br & gt ;
romper; & lt; br & gt ;
caso 3: & lt; br & gt ;
JOptionPane.showMessageDialog (nulo y entre comillas; usted eligió el número 3.& amp; quot;); & lt; br & gt ;
romper; & lt; br & gt ;
// Esta opción se elige porque el valor 4 coincide con el valor de & lt; br & gt ;
// el menúChoise variable & lt; br & gt ;
caso 4: & amp; amp; nbsp; JOptionPane.showMessageDialog (nulo, & amp; quot; eligió el número 4.& amp; quot;); & amp; amp; nbsp; break; & lt; br & gt ;
predeterminado: & lt; br & gt ;
JOptionPane.showMessageDialog (nulo, & amp; quot; algo salió mal!& amp; quot;); & lt; br & gt ;
romper; & lt; br & gt ;
} & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; & lt; / br & gt; / br & gt; & br & gt; & br & gt; & gt; & lt; / br & gt; & gt; & gt; & gt;

Si observa la sintaxis de la instrucción de cambio, debe 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 después, seguido de dos puntos. Por ejemplo, el caso 1: es la etiqueta del caso seguida del valor 1 & amp; # x2014; 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, la cuarta opción alternativa está resaltada & amp; # x2014; la etiqueta del caso, el código que ejecuta (es decir., el panel de opciones) y una declaración de ruptura. La instrucción de corte señala el final del código que debe ejecutarse. Si mira, usted y amp; apos; verán que cada opción alternativa termina con una declaración de interrupción. Es muy importante recordar que se puso en la declaración de descanso. Considere el siguiente código:

& lt; pre & gt; // let & amp; apos; s dice que el usuario elige el número 1 & lt; br & gt ;
int menuChoice = 1; & lt; br & gt ;
interruptor (menú Elección) & lt; br & gt ;
caso 1: & lt; br & gt ;
JOptionPane.showMessageDialog (nulo y entre comillas; usted eligió el número 1.& amp; quot;); & lt; br & gt ;
caso 2: & lt; br & gt ;
JOptionPane.showMessageDialog (nulo y entre comillas; usted eligió el número 2.& amp; quot;); & lt; br & gt ;
romper; & lt; br & gt ;
caso 3: & lt; br & gt ;
JOptionPane.showMessageDialog (nulo y entre comillas; usted eligió el número 3.& amp; quot;); & lt; br & gt ;
romper; & lt; br & gt ;
caso 4: & lt; br & gt ;
JOptionPane.showMessageDialog (nulo y entre comillas; usted eligió el número 4.& amp; quot;); & lt; br & gt ;
romper; & lt; br & gt ;
predeterminado: & lt; br & gt ;
JOptionPane.showMessageDialog (nulo, & amp; quot; algo salió mal!& amp; quot;); & lt; br & gt ;
romper; & lt; br & gt ;
} & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; & lt; / br & gt; / br & gt; & br & gt; & br & gt; & gt; & lt; / br & gt; & gt; & gt; & gt;

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

4). Hay una etiqueta predeterminada en la parte inferior de la instrucción del interruptor. Esto es como una red de seguridad en caso de que ninguno de los valores de las etiquetas de las cajas coincida con el valor que se compara con él. Es muy útil para 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 instrucción de cambio que cree es un buen hábito. Puede parecer poco probable que alguna vez se use, pero los errores pueden aparecer 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 declaraciones de interruptor. Poder comparar valores de cadena en una instrucción de interruptor puede ser muy útil:

& lt; pre & gt; Nombre de cadena = & amp; quot; Bob & amp; quot ;; & lt; br & gt ;
cambiar (name.toLowerCase ()) & lt; br & gt ;
{& lt; br & gt ;
case & amp; quot; joe & amp; quot ;: & lt; br & gt ;
JOptionPane.showMessageDialog (nulo, & amp; quot; Buenos días, Joe!& amp; quot;); & lt; br & gt ;
romper; & lt; br & gt ;
case & amp; quot; michael & amp; quot ;: & lt; br & gt ;
JOptionPane.showMessageDialog (nulo, & amp; quot; How & amp; apos; s it go, Michael?& amp; quot;); & lt; br & gt ;
romper; & lt; br & gt ;
case & amp; quot; bob & amp; quot ;: & lt; br & gt ;
JOptionPane.showMessageDialog (nulo, & amp; quot; Bob, mi viejo amigo!& amp; quot;); & lt; br & gt ;
romper; & lt; br & gt ;
case & amp; quot; billy & amp; quot ;: & lt; br & gt ;
JOptionPane.showMessageDialog (nulo, & amp; quot; Tarde Billy, cómo y amp; apos; s los niños?& amp; quot;); & lt; br & gt ;
romper; & lt; br & gt ;
predeterminado: & lt; br & gt ;
JOptionPane.showMessageDialog (nulo, & amp; quot; Encantado de conocerte, John Doe.& amp; quot;); & lt; br & gt ;
romper; & lt; br & gt ;
} & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; & lt; / br & gt; / br & gt; & br & gt; & br & gt; & gt; & lt; / br & gt; & gt; & gt; & gt;

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 la etiqueta del caso pueden estar en minúsculas.

Cosas a recordar sobre la instrucción Switch

& amp; # x2022; El tipo de variable a comparar debe ser un tipo char, byte, short, int, Character, Byte, Short, Integer, String o enum.

& amp; # x2022; El valor al lado de la etiqueta de la carcasa no puede ser una variable. Tiene que ser una expresión constante (p. Ej., un literal int, un literal char).

& amp; # x2022; Los valores de las expresiones constantes en todas las etiquetas de las mayúsculas y minúsculas deben ser diferentes. Lo siguiente daría como resultado un error de tiempo de compilación:

& lt; pre & gt; switch (menúElección) & lt; br & gt ;
{& lt; br & gt ;
caso 323: & lt; br & gt ;
JOptionPane.showMessageDialog (nulo y entre comillas; usted eligió la opción 1.& amp; quot;); & lt; br & gt ;
romper; & lt; br & gt ;
caso 323: & lt; br & gt ;
JOptionPane.showMessageDialog (nulo y entre comillas; usted eligió la opción 2.& amp; quot;); & lt; br & gt ;
break; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; & lt; / br & gt; & lt; / br & gt; & lt; / pre & gt;

&erio; # x2022; Solo puede haber una etiqueta predeterminada en una instrucción de cambio.

& amp; # x2022; Cuando se usa un objeto para la instrucción del interruptor (p. Ej., Cadena, Entero, Carácter) asegúrese de que no sea nulo. Un objeto nulo dará como resultado un error de tiempo de ejecución cuando se ejecute la instrucción del interruptor.

& amp; # x203A; Informática}

Dejar respuesta

Please enter your comment!
Please enter your name here

FOLLOW US

Related Stories