La Sintaxis empleada por un switch es la siguiente:
switch (variable) { case <posible valor> : Instrucciones : break; case <posible valor> : Instrucciones : break; case <posible valor> : Instrucciones : break; case <posible valor> : Instrucciones : break; case <posible valor> : Instrucciones : break; default : Instrucciones ; |
Dada una variable de entrada esta se define seguido del vocablo switch
.
Se abre una llave para iniciar los posibles valores que pueda tomar dicha variable.
Los juegos de valores son iniciados con case
seguido del posible valor de la variable, posteriormente es definido un juego de instrucciones que serán ejecutados en caso de corresponder con el valor de la variable y finalmente (opcional) se utiliza vocablo break
para salir de ciclo case.
Un valor opcional es la definición de la linea default
, cuyas instrucciones serán ejecutadas en caso que la variable del switch no coincida con los valores definidos.
public class Meses { public static void main(String[] args) { int month = 8; switch (month) { case 1: System.out.println("Enero"); break; case 2: System.out.println("Febrero"); break; case 3: System.out.println("Marzo"); break; case 4: System.out.println("Abril"); break; case 5: System.out.println("Mayo"); break; case 6: System.out.println("Junio"); break; case 7: System.out.println("Julio"); break; case 8: System.out.println("Agosto"); break; case 9: System.out.println("Septiembre"); break; case 10: System.out.println("Octubre"); break; case 11: System.out.println("Noviembre"); break; case 12: System.out.println("Diciembre"); break; } } } |
Se define un primitivo con valor de 8, el cual es utilizado como variable para un switch.
Dentro del switch son definidos valores del 1 al 12, los cuales tienen como instrucción imprimir a pantalla el valor del mes correspondiente.
Cuando se describió la Sintaxis de un switch se mencionó que el uso de break
al final de cada declaración (case
) era opcional, esto se debe a la posibilidad que exista más de un valor que deba ejecutar las mismas instrucciones, a continuación se describe este caso:
public class Meses2 { public static void main(String[] args) { int mes = 10; int año = 2002; int numDias = 0; switch (mes) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: numDias = 31; break; case 4: case 6: case 9: case 11: numDias = 30; break; case 2: if ( ((año % 4 == 0) && !(año % 100 == 0)) || (año % 400 == 0) ) numDias = 29; else numDias = 28; break; } System.out.println("Numero de Dias = " + numDias); } } |
En esta Clase el uso de switch varía, ya que son agrupados distintos valores, al omitir el uso del vocablo break
; el uso de break
en un switch
es critico ya que al no ser definido puede ocasionar un comportamiento errático, ya que al no indicarse se continúan evaluando los distintos valores restantes en un switch, posiblemente causando un comportamiento no deseado.
Finalmente, vale mencionar que las datos que se puede evaluar a través de un switch son solo primitivos, esto es, no se puede definir un juego de String's y comparar sus valores, para este tipo de situaciones (String u otro Objeto) se requiere usar condicionales if/else anidadas.