Tutoriales de informática - Abrirllave.com

Abrirllave.com

Instrucción de control alternativa múltiple (switch) en Java

EJEMPLO { DiaDeLaSemana } Se quiere escribir un programa que solicite por teclado el número (dato entero) de un día de la semana y, luego, muestre por pantalla el nombre (dato cadena) de dicho día. Ahora bien, si el número que se introduce es menor que 1 ó mayor que 7, en pantalla se mostrará el mensaje "ERROR: Día incorrecto". Al ejecutar dicho programa, en la pantalla se visualizará:

Ejecución del programa DiaDeLaSemana escrito en Java, donde se muestra el día de la semana en función del número de día introducido por el usuario.

El siguiente código fuente escrito en Java, es una posible solución:

import java.util.Scanner;

public class DiaDeLaSemana
{
    public static void main(String[] args)
    {
        int dia;
        Scanner teclado = new Scanner(System.in);

        System.out.printf("Introduzca día de la semana: ");
        dia = teclado.nextInt();

        switch(dia)
        {
            case 1: System.out.printf("Lunes");
                    break;
            case 2: System.out.printf("Martes");
                    break;
            case 3: System.out.printf("Miércoles");
                    break;
            case 4: System.out.printf("Jueves");
                    break;
            case 5: System.out.printf("Viernes");
                    break;
            case 6: System.out.printf("Sábado");
                    break;
            case 7: System.out.printf("Domingo");
                    break;
           default: System.out.printf("ERROR: Día incorrecto.");
        }
    }
}

Como se puede apreciar, se ha utilizado una instrucción alternativa switch, la cual posibilita seleccionar el siguiente bloque de instrucciones que se tiene que ejecutar, en función del valor de una expresión (en este caso dia). Por ejemplo, cuando dia vale 4, se ejecuta la instrucción:

System.out.printf("Jueves");

Al final de cada bloque de instrucciones, hay que escribir una instrucción break. De no ser así, se seguirían ejecutando el resto de instrucciones hasta llegar a la llave } que cierra el bloque del switch.

Por otra parte, véase que si el valor de dia no es ninguno de los case indicados (números enteros del 1 al 7) se ejecuta el bloque de instrucciones escrito después de default:.

Anidamiento de un switch en un if

El problema anterior planteado, también se puede resolver anidando la instrucción switch dentro de un if, como se muestra a continuación:

import java.util.Scanner;

public class DiaDeLaSemana2
{
    public static void main(String[] args)
    {
        int dia;
        Scanner teclado = new Scanner(System.in);

        System.out.printf("Introduzca día de la semana: ");
        dia = teclado.nextInt();

        if(dia>=1 && dia<=7)
        {
            // Inicio del anidamiento
            switch(dia)
            {
                case 1: System.out.printf("Lunes");
                        break;
                case 2: System.out.printf("Martes");
                        break;
                case 3: System.out.printf("Miércoles");
                        break;
                case 4: System.out.printf("Jueves");
                        break;
                case 5: System.out.printf("Viernes");
                        break;
                case 6: System.out.printf("Sábado");
                        break;
                case 7: System.out.printf("Domingo");
            }
            // Fin del anidamiento
        }
        else
        {
            System.out.printf("ERROR: Día incorrecto.");
        }
    }
}

Fíjese que, en esta solución, no es necesario escribir el caso default en el switch.