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ú.