Sí. Los conmutadores rompen el patrón de instrucción de bloque de idioma, pero esto se debe principalmente a C/C++ a partir del cual se basa la instrucción de conmutación utilizada por Java.
en los tres idiomas, la sentencia switch tiene la siguiente forma:
switch(variable) {
case n:
statement 1;
statement n;
(optional) break;
case n+1:
statement 1;
statement n;
(optional) break;
// Optionally more statements
(optional) default:
statement 1;
statement n;
}
Debido a que una sentencia switch rompe el patrón de lenguaje tradicional, muchos programadores envuelven sus múltiples declaraciones en un caso con el estilo tradicional del bloque: { }
Esto se debe a que la mayoría de las construcciones en los tres idiomas permiten que las sentencias de estilo de bloque se consideren como una sola instrucción, pero la instrucción switch no requiere estilo de bloque para ejecutar sentencias múltiples en un solo caso.
Sin la declaración de interrupción que separa cada caso, habrá una "caída": si el caso n coincidiera y no tuviera una interrupción, se ejecutaría el código debajo (caso n + 1) - caso n + 1 no tenía un salto y se correspondía, se ejecutaba el código predeterminado, si ninguno tenía un corte, cuando se hacía coincidir el caso n, se ejecutaba el código para el caso n, caso n + 1 y el valor predeterminado.
El valor predeterminado es opcional y especifica una acción predeterminada para que se ejecute una instrucción switch. Normalmente, la condición predeterminada es un controlador genérico o un buen lugar para lanzar una excepción si el valor lógicamente no puede ser otro que los valores en la instrucción switch.
para ilustrar una sentencia switch ejecutar dentro de una sentencia switch, echar un vistazo a este ejemplo artificial:
String message = null;
int outerVariable = getOuterVariable();
switch(outerVariable) {
case n:
statement 1;
statement n;
break;
case n+1:
int innerVariable = getInnerVariable();
switch(innerVariable) {
case 1:
message = "IT WAS 1";
break;
default:
message = "WHY WOULD YOU DO THIS? OH THE HUMANITY!";
}
break;
// Optionally more statements
(optional) default:
statement 1;
statement n;
}
en el tiempo que se ha tomado en escribir esta pregunta se podría haber probado usted mismo ... sólo decir ... –
Creo que el objetivo de SO es que las personas * n no necesiten escribir código para probar una idea. –
@ande_turner: no. SO está aquí para responder preguntas, no para hacer cosas en lugar de personas. –