Está en la página 1de 5

Programacin en Java

Sentencia switch
< Programacin en Java

Sentencia if-else

Sentencia switch

Vamos a desarrollar una calculadora totalmente elemental. Sin muchas caractersticas salvo
de realizar operaciones aritmticas con dos operandos. Disponemos de una variable de tipo
char que nos indicar que tipo de operacin se debe efectuar. Realizamos la operacin y
mostramos el resultado en la pantalla. Despus de luchar con las sentencias if-else nos qued
algo parecido a esto:

public class MiniCalculadora {


public static void main(String args[]){
int a = 1;
int b = 1;
char op = '/';
System.out.print("El resultado es : ");
if ( op == '+' ) {
System.out.println( a + b);
} else if ( op == '-') {
System.out.println( a - b);
} else if ( op == '*') {
System.out.println( a * b);
} else if ( op == '/') {
System.out.println( a / b);
}
}
}

Ya nos alejamos bastante de las decisiones simples. Aqu tenemos de una cadena de
sentencias if-else que realizan un seleccin mltiple. La condicin general tiene mas dos
alternativas. Tendremos que acudir a la sentencia switch que se encarga de este tipo de
seleccin.

public class MiniCalculadora{

public static void main(String args[]){


int a = 1;
int b = 1;
char op = '/';
System.out.print("El resultado es : ");
switch ( op ) {
case '+':
System.out.println( a + b );
break;
case '-':
System.out.println( a - b );
break;
case '*':
System.out.println( a * b );
break;
case '/':
System.out.println( a / b );
break;
default:
System.out.println("error" );
break;
}
}
}

La sentencia switch se encarga de estructurar una seleccin mltiple. Al contrario del


enunciado if-else que slo podemos indicar dos alternativas, maneja un nmero finito de
posibilidades. La estructura general del enunciado switch es la siguiente:

switch( expresin ) {
case constante1:
sentencia1;
...
break;
...
case constanteN:
sentenciaN;

...
break;
default:
sentencia;
...
break
}

El valor de la expresin y de las constantes tiene que ser de tipo char, byte, short o int. No hay
lugar para booleanos, reales ni long porque, en la ejecucin, todos los valores que
incorporamos se transforman en valores de tipo int.
Al evaluar la expresin de switch, el intrprete busca una constante con el mismo valor. Si la
encuentra, ejecuta las sentencias asociadas a esta constante hasta que tropiece con un
break. La sentencia break finaliza la ejecucin de esta estructura. Si no encuentra ninguna
constante que coincida con la expresin, busca la lnea default. Si existe, ejecuta las
sentencias que le siguen. La sentencia default es opcional.
Volviendo a la mini calculadora, vemos como se organiza las distintas alternativas de acuerdo
al valor de una constante char. Estas alternativas representan las distintas operaciones que
estn disponibles y solo se ejecutar una sola. Por ejemplo, si el valor del operador (en el
programa figura op) es igual al signo de la suma , la sentencia switch ejecutar solamente la
lnea que corresponde con esta operacin.
Que ocurre si cambiamos la variable op por algn carcter distinto a los especificados? Entra
en juego la alternativa default y todas las setencias que le siguen. En este caso imprime por
pantalla el mensaje "error". Si nos olvidamos de incorporar esta alternativa, no pasa nada.
Ninguna sentencia dentro de la estructura switch se ejecutar.
Ya que hablamos de default, es conveniente mencionar que no es necesario que quede
relegado al final de la estructura. Podemos situarla al comienzo , en el medio, en definitiva, en
donde nos quede mas til segn la lgica que apliquemos o donde queramos.

switch ( op ) {
default :
System.out.println("error");
break;
case '+':
System.out.println( a + b );
break;
...

En el ejemplo presentado, funciona de la misma manera un default al principio. Obviamente


no debe existir mas de una alternativa default.
Las sentencias break son opcionales. Se utilizan con el propsito de separar las alternativas.
Pero fieles a nuestro estilo de meternos en problemas decidimos que algunos break deben
desaparecer. Probemos que ocurre con este cdigo:

switch ( op ) {
case '+':
System.out.println( a + b );
case '-':
System.out.println( a - b );
break;
...

Es el mismo que el original, solo "olvidamos" de agregarle un break al final de la alternativa


suma. Si cambiamos el valor de op por el carcter '+' y ejecutamos el programa, nos responde
de esta manera:

El resultado es : 2
0

Nos dio los resultados de la suma y la resta. Al no tener un break en la suma, se pas de largo
y ejecuto la de abajo , que justamente era la resta.
En algunas circunstancias, el break est de mas. Es posible contruir una estructura en donde
se ejecuten mas de una alternativa al mismo tiempo. Vemos un ejemplo:

public class Lineas{


public static void main(String args[]){
int j = 2;
switch (j) {
case 5:
System.out.println("********");
case 4:
System.out.println("********");
case 3:
System.out.println("********");

case 2:
System.out.println("********");
case 1:
System.out.println("********");
}
}
}

El programa tiene por objetivo listar un nmero dado de lneas. Se pueden dibujar hasta 5
lneas trazadas con el smbolo *. La cantidad depender del valor de la variable j. Por ejemplo,
si j vale 2, activa la alternativa que tiene esta constante y como no tiene un break que la
obstaculice sigue con la alternativa de abajo.

También podría gustarte