Vous êtes sur la page 1sur 5

Programación en Java / Sentencia switch 1

Programación en Java /Sentencia switch


Vamos a desarrollar una calculadora totalmente elemental. Sin muchas características salvo de realizar operaciones
aritméticas con dos operandos. Disponemos de una variable de tipo char que nos indicará que tipo de operación se
debe efectuar. Realizamos la operación y mostramos el resultado en la pantalla. Después 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 selección múltiple. La condición general tiene mas dos alternativas. Tendremos que acudir a la sentencia switch
que se encarga de este tipo de selección.

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;
Programación en Java / Sentencia switch 2

default:
System.out.println("error" );
break;
}
}
}

La sentencia switch se encarga de estructurar una selección múltiple. Al contrario del enunciado if-else que sólo
podemos indicar dos alternativas, maneja un número finito de posibilidades. La estructura general del enunciado
switch es la siguiente:

switch( expresión ) {
case constante1:
sentencia1;
...
break;
...
case constanteN:
sentenciaN;
...
break;
default:
sentencia;
...
break
}

El valor de la expresión 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 ejecución, todos los valores que incorporamos se transforman en valores de tipo int.
Al evaluar la expresión de switch, el intérprete 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 ejecución de esta
estructura. Si no encuentra ninguna constante que coincida con la expresión, busca la línea 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 están 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 línea que corresponde con esta operación.
¿Que ocurre si cambiamos la variable op por algún carácter 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 según la lógica
que apliquemos o donde queramos.

switch ( op ) {
default :
System.out.println("error");
break;
Programación en Java / Sentencia switch 3

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 propósito de separar las alternativas. Pero fieles a nuestro
estilo de meternos en problemas decidimos que algunos break deben desaparecer. Probemos que ocurre con este
código:

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 carácter '+' 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 número dado de líneas. Se pueden dibujar hasta 5 líneas trazadas con el
símbolo *. La cantidad dependerá del valor de la variable j. Por ejemplo, si j vale 2, activa la alternativa que tiene
Programación en Java / Sentencia switch 4

esta constante y como no tiene un break que la obstaculice sigue con la alternativa de abajo.
Fuentes y contribuyentes del artículo 5

Fuentes y contribuyentes del artículo


Programación en Java / Sentencia switch  Fuente: http://es.wikibooks.org/w/index.php?oldid=127369  Contribuyentes: Luckas Blade, Pirenne, 5 ediciones anónimas

Licencia
Creative Commons Attribution-Share Alike 3.0 Unported
http:/ / creativecommons. org/ licenses/ by-sa/ 3. 0/

Vous aimerez peut-être aussi