Páginas

Syntaxis de un switch anidado JAVA

La sintaxis para integrar un switch dentro de otro switch en Java (lo que se llama un switch anidado) es así:


// Solicitar la primera variable
int variable1 = leer.nextInt();

switch (variable1) {
  case 1:
    // Código del primer caso

    // Solicitar la variable dentro del caso 1 (para el otro switch)
    int variable2 = leer.nextInt();

    switch (variable2) {
      case 1:
        // Código del subcaso 1
        break;
      case 2:
        // Código del subcaso 2
        break;
      default:
        // Si no coincide ningún caso del segundo switch
        break;
    }
    break; // Cerramos el case 1 del primer switch

  case 2:
    // Código del segundo caso

    // Solicitar la variable para otro switch
    int variable3 = leer.nextInt();

    switch (variable3) {
      case 1:
        // Código del subcaso 1
        break;
      case 2:
        // Código del subcaso 2
        break;
      default:
        // Si no coincide ningún caso del segundo switch
        break;
    }
    break; // Cerramos el case 2 del primer switch

  default:
    // Si no coincide ningún caso del primer switch
    break;
}

ejemplo:


import java.util.Scanner;

public class EjemploSwitchAnidado {
    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);

        System.out.println("=== MENÚ PRINCIPAL ===");
        System.out.println("1. Operaciones básicas");
        System.out.println("2. Operaciones con raíces");
        System.out.print("Elige una opción: ");
        int variable1 = leer.nextInt(); // primera decisión

        switch (variable1) {
            case 1:
                // Primer submenú
                System.out.println("\n--- Operaciones Básicas ---");
                System.out.println("1. Sumar");
                System.out.println("2. Restar");
                System.out.println("3. Multiplicar");
                System.out.println("4. Dividir");
                System.out.print("Elige una opción: ");
                int variable2 = leer.nextInt(); // segunda decisión

                System.out.print("Ingresa el primer número: ");
                double num1 = leer.nextDouble();
                System.out.print("Ingresa el segundo número: ");
                double num2 = leer.nextDouble();

                switch (variable2) {
                    case 1:
                        System.out.println("Resultado: " + (num1 + num2));
                        break;
                    case 2:
                        System.out.println("Resultado: " + (num1 - num2));
                        break;
                    case 3:
                        System.out.println("Resultado: " + (num1 * num2));
                        break;
                    case 4:
                        if (num2 != 0)
                            System.out.println("Resultado: " + (num1 / num2));
                        else
                            System.out.println("Error: división entre cero");
                        break;
                    default:
                        System.out.println("Opción no válida en el submenú.");
                        break;
                }
                break; // cierra el case 1 del primer switch

            case 2:
                // Segundo submenú
                System.out.println("\n--- Operaciones con Raíces ---");
                System.out.println("1. Raíz cuadrada");
                System.out.println("2. Raíz cúbica");
                System.out.println("3. Raíz cuarta");
                System.out.print("Elige una opción: ");
                int variable3 = leer.nextInt(); // segunda decisión en este caso

                System.out.print("Ingresa un número: ");
                double numero = leer.nextDouble();

                switch (variable3) {
                    case 1:
                        System.out.println("Raíz cuadrada: " + Math.sqrt(numero));
                        break;
                    case 2:
                        System.out.println("Raíz cúbica: " + Math.cbrt(numero));
                        break;
                    case 3:
                        System.out.println("Raíz cuarta: " + Math.pow(numero, 1.0 / 4.0));
                        break;
                    default:
                        System.out.println("Opción no válida en el submenú de raíces.");
                        break;
                }
                break; // cierra el case 2 del primer switch

            default:
                System.out.println("Opción no válida en el menú principal.");
                break;
        }

        leer.close();
    }
}

Qué hace este programa:

  • Muestra un menú principal con dos opciones: 1. Operaciones básicas y 2. Operaciones con raíces.
  • Si eliges 1, se abre un submenú para sumar, restar, multiplicar o dividir (usando switch dentro del switch).
  • Si eliges 2, se abre otro submenú con opciones de raíces usando los métodos de Math.

ahora con opcion de salida:


import java.util.Scanner;

public class CalculadoraSwitchAnidado {
    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        int variable1;

        do {
            System.out.println("\n=== MENÚ PRINCIPAL ===");
            System.out.println("1. Operaciones básicas");
            System.out.println("2. Operaciones con raíces");
            System.out.println("3. Salir");
            System.out.print("Elige una opción: ");
            variable1 = leer.nextInt(); // opción del menú principal

            switch (variable1) {
                case 1:
                    System.out.println("\n--- Operaciones Básicas ---");
                    System.out.println("1. Sumar");
                    System.out.println("2. Restar");
                    System.out.println("3. Multiplicar");
                    System.out.println("4. Dividir");
                    System.out.print("Elige una opción: ");
                    int variable2 = leer.nextInt(); // submenú de operaciones básicas

                    System.out.print("Ingresa el primer número: ");
                    double num1 = leer.nextDouble();
                    System.out.print("Ingresa el segundo número: ");
                    double num2 = leer.nextDouble();

                    switch (variable2) {
                        case 1:
                            System.out.println("Resultado: " + (num1 + num2));
                            break;
                        case 2:
                            System.out.println("Resultado: " + (num1 - num2));
                            break;
                        case 3:
                            System.out.println("Resultado: " + (num1 * num2));
                            break;
                        case 4:
                            if (num2 != 0)
                                System.out.println("Resultado: " + (num1 / num2));
                            else
                                System.out.println("Error: división entre cero");
                            break;
                        default:
                            System.out.println("Opción no válida en el submenú.");
                            break;
                    }
                    break;

                case 2:
                    System.out.println("\n--- Operaciones con Raíces ---");
                    System.out.println("1. Raíz cuadrada");
                    System.out.println("2. Raíz cúbica");
                    System.out.println("3. Raíz cuarta");
                    System.out.println("4. Raíz quinta");
                    System.out.print("Elige una opción: ");
                    int variable3 = leer.nextInt(); // submenú de raíces

                    System.out.print("Ingresa un número: ");
                    double numero = leer.nextDouble();

                    switch (variable3) {
                        case 1:
                            System.out.println("Raíz cuadrada: " + Math.sqrt(numero));
                            break;
                        case 2:
                            System.out.println("Raíz cúbica: " + Math.cbrt(numero));
                            break;
                        case 3:
                            System.out.println("Raíz cuarta: " + Math.pow(numero, 1.0 / 4.0));
                            break;
                        case 4:
                            System.out.println("Raíz quinta: " + Math.pow(numero, 1.0 / 5.0));
                            break;
                        default:
                            System.out.println("Opción no válida en el submenú de raíces.");
                            break;
                    }
                    break;

                case 3:
                    System.out.println("Saliendo del programa...");
                    break;

                default:
                    System.out.println("Opción no válida, intenta de nuevo.");
                    break;
            }

        } while (variable1 != 3); // el menú se repite hasta que elija salir

        leer.close();
    }
}

Cómo funciona

  • Usa un bucle do...while para repetir el menú principal hasta que el usuario elija 3 (Salir).
  • Dentro del switch principal hay dos switch anidados:
  • Uno para operaciones básicas (suma, resta, etc.).
  • Otro para raíces (cuadrada, cúbica, etc.).
  • Se usa la clase Math para los cálculos de raíces.
  • Si el usuario digita una opción incorrecta, muestra un mensaje y vuelve al menú.