Contenido del curso

Construcción de clases y modelado de objetos

Menú interactivo en Java con switch

Resumen

Construir una aplicación interactiva en Java exige más que clases y atributos: necesitas flujos de control que permitan repetir acciones, validar entradas y tomar decisiones según lo que escriba el usuario. Aquí verás cómo darle dinamismo a una plataforma tipo Platzi Play usando while, switch y constantes, todo conectado a un menú real.

¿Cómo construir un menú interactivo con while true en Java?

La idea es que el programa siga vivo hasta que el usuario decida salir. Para eso usas un ciclo infinito que muestra opciones en cada iteración y captura la respuesta.

Dentro del método principal defines un while (true) que imprime las opciones disponibles y lee un número con un Scanner. Java permite usar triples comillas para escribir cadenas de varias líneas, lo que hace el menú mucho más legible [01:30].

Las cinco opciones del ejemplo son:

  1. Agregar contenido.
  2. Mostrar todo.
  3. Buscar por título.
  4. Eliminar.
  5. Salir.

Sin una condición de salida, el ciclo nunca termina. Por eso, cuando la opción elegida es la de salir, ejecutas System.exit(0). Ese cero es el status por defecto que indica que el programa terminó sin errores [03:05].

¿Para qué sirve while true en un menú? Mantiene el programa ejecutándose en bucle para que el usuario pueda hacer varias acciones seguidas, hasta que elija salir explícitamente.

¿Cómo validar entradas con Scanner y evitar InputMismatchException?

Si el usuario escribe texto cuando esperas un número, Java lanza una excepción llamada InputMismatchException y el programa se rompe. La solución vive dentro de tu utilidad ScannerUtils.

Después de mostrar el mensaje, agregas un while que verifica si el Scanner no detecta un entero válido. Si no lo es, imprimes un mensaje como dato no aceptado, vuelves a concatenar el texto original y descartas la entrada inválida con scanner.next() [04:30].

Ese scanner.next() es clave: descarta el valor incorrecto y libera el buffer para que el usuario pueda intentar de nuevo. El ciclo se mantiene activo hasta que entre un entero real.

Para capturar decimales aplicas la misma lógica, pero con nextDouble() en lugar de nextInt(). La negación dentro del while es lo que filtra el tipo de dato esperado.

¿Cuándo usar switch case en lugar de varios else if?

Cuando ya tienes cuatro o cinco condiciones encadenadas con if y else if, el código empieza a costar leerlo. Es ahí donde el switch se vuelve la mejor práctica.

¿Cómo declarar constantes para reemplazar números mágicos?

Un número suelto como 5 no comunica nada. Por eso defines constantes en la parte superior de la clase con la sintaxis:

java public static final int SALIR = 5; public static final int AGREGAR = 1; public static final int MOSTRAR_TODO = 2; public static final int BUSCAR_POR_TITULO = 3; public static final int ELIMINAR = 4;

Ahora, en lugar de comparar opcionElegida == 5, escribes opcionElegida == SALIR. El código queda más fácil de leer y de mantener [05:50].

¿Cómo se escribe un switch con expresión lambda?

La sintaxis moderna de Java permite usar la flecha ->, que funciona como una expresión lambda dentro del switch. Cada caso queda en una sola línea cuando la acción es simple:

java switch (opcionElegida) { case AGREGAR -> { /* lógica para agregar / } case MOSTRAR_TODO -> plataforma.mostrarTitulos(); case BUSCAR_POR_TITULO -> { / pendiente / } case ELIMINAR -> { / pendiente */ } case SALIR -> System.exit(0); }

Esta estructura reemplaza una cadena larga de if y else if por algo mucho más limpio [07:40].

¿Switch o if else, cuál conviene? Si tienes tres o más condiciones que comparan la misma variable contra valores fijos, el switch es más legible y rendidor. Para condiciones complejas con rangos o múltiples variables, el if else sigue siendo la opción.

¿Cómo conectar el menú con los métodos de la plataforma?

Dentro del caso AGREGAR, reutilizas el código que ya pedía nombre, género, duración y calificación, creabas la instancia de la película y luego llamabas plataforma.agregar(pelicula). Incluso puedes pasar la instancia directamente al método para ahorrar una variable intermedia [07:00].

Para MOSTRAR_TODO, basta con plataforma.mostrarTitulos(). Las opciones de buscar y eliminar quedan pendientes para la siguiente iteración del proyecto.

Al probar el flujo, agregar una película llamada Titanic, género Drama, duración 200 minutos y calificación 3.9 confirma que el menú captura los datos, los guarda y los muestra cuando eliges la opción 2 [09:20].

¿Cómo crees que cambiaría tu menú si en vez de números usaras texto como entrada? Cuéntame en los comentarios.