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 case que se ejecutará cuando el valor asociado al case coincida con el valor obtenido al evaluar la expresión del switch.
  • 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áusula case a cada uno de los valores que deban ser tenidos en cuenta.
  • La cláusula default será utilizada para indicar un caso por defecto, las sentencias asociadas a la cláusula default se ejecutarán si ninguno de los valores indicados en las cláusulas case coincide con el resultado de la evaluación de la expresión de la estructura switch.
  • La cláusula default puede no existir, y por tanto, si ningún case ha sido activado finalizaría el switch.
  • Cada cláusula case puede 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 sentencia break de ruptura. (la sentencia break se 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 switch debemos 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