Programming
T02-007- 02- Estructuras Selectivas: switch
Enunciado
switch
La estructura if, que hemos visto anteriormente es muy útil cuando el número de alternativas que debemos evaluar es muy bajo, cuando tenemos, por ejemplo, que decidir entre 2 opciones. Pero, si el número de alternativas crece podemos utilizar la estructura de selección múltiple switch.
Sintaxis:
switch (expresion) {
case valor1:
sentencia1_1;
sentencia1_2;
…
break;
…
…
case valorN:
sentenciaN_1;
sentenciaN_2;
…
break;
default:
sentencias-default;
}Funcionamiento
- Las diferentes alternativas de esta estructura estarán precedidas de la cláusula
caseque se ejecutará cuando el valor asociado alcasecoincida con el valor obtenido al evaluar la expresión delswitch.- En las cláusulas
case, no pueden indicarse expresiones condicionales, rangos de valores o listas de valores. (otros lenguajes de programación sí lo permiten). Habrá que asociar una cláusulacasea cada uno de los valores que deban ser tenidos en cuenta.- La cláusula
defaultserá utilizada para indicar un caso por defecto, las sentencias asociadas a la cláusuladefaultse ejecutarán si ninguno de los valores indicados en las cláusulascasecoincide con el resultado de la evaluación de la expresión de la estructuraswitch.- La cláusula
defaultpuede no existir, y por tanto, si ningúncaseha sido activado finalizaría elswitch.- Cada cláusula
casepuede llevar asociadas una o varias sentencias, sin necesidad de delimitar dichos bloques por medio de llaves.- En el momento en el que el resultado de la evaluación de la expresión coincide con alguno de los valores asociados a las cláusulas
case, se ejecutarán todas las instrucciones asociadas hasta la aparición de una sentenciabreakde ruptura. (la sentenciabreakse analizará en epígrafes posteriores)Diagrama de flujo
Ejemplo:
Queremos hacer un programa Java que nos diga qué día de la semana se corresponde con el número del día, teniendo en cuenta que la semana empieza en lunes.
Entiende y prueba este código
package diasemana;
import java.util.Scanner;
public class DiaSemana {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int numDia;
String nombreDia;
numDia = sc.nextInt();
switch (numDia) {
case 1:
nombreDia = "LUNES";
break;
case 2:
nombreDia = "MARTES";
break;
case 3:
nombreDia = "MIERCOLES";
break;
case 4:
nombreDia = "JUEVES ";
break;
case 5:
nombreDia = "VIERNES ";
break;
case 6:
nombreDia = "SABADO ";
break;
case 7:
nombreDia = "DOMINGO ";
break;
default:
nombreDia = "ERROR ";
}
System.out.println(nombreDia);
}
}
Ejercicio:
Desarrolla una calculadora básica.
El usuario debe introducir, por teclado y en este orden, dos números enteros y uno de los siguientes caracteres : '
+', '-', 'x', ':'Cada uno de los caracteres anteriores representa una operación: suma, resta, multiplicación y división respectivamente.
Utilizando una estructura
switchdebemos obtener el resultado de la operación de los dos números, en función del caracter introducido. Si el carácter introducido no es ninguno de los anteriores, se debe mostrar el mensaje "ERROR" y el resultado de la operación será 0.NOTA: Como en Java no tenemos una instrucción equivalente a sc.nextInt() para recibir el siguiente caracter pulsado por el usuario, utilizaremos la siguiente estructura:
operacion = sc.next().charAt(0);
Solución
package calculadoraswitch;
import java.util.Scanner;
public class CalculadoraSwitch {
public static void main(String[] args) {
char operacion;
int n1 = 0, n2 = 0, resultado = 0;
Scanner sc = new Scanner(System.in);
n1 = sc.nextInt();
n2 = sc.nextInt();
operacion = sc.next().charAt(0);
switch (operacion) {
case '+':
resultado = n1 + n2;
break;
case '-':
resultado = n1 - n2;
break;
case 'x':
resultado = n1 * n2;
break;
case ':':
resultado = n1 / n2;
break;
default:
System.out.println("ERROR");
break;
}
System.out.println(resultado);
}
}
Input
5 4 x
20 4 :
Output
20
5

