Como hacer un menú de opciones en consola en Java

Hola a todos, hoy os voy a enseñar como hacer un menú de en consola Java.

Es normal que una aplicación le demos una serie de opciones al usuario para que pueda realizar distintas opciones sin un orden definido.

Vamos a explicar paso a paso como se puede hacer un simple menú de X opciones.

Todo esto lo hare en un main, se puede hacer en una función o donde queráis.

Lo primero que necesitamos es un booleano, una variable numerica (segun como querais pedir las opciones) y un Scanner o otro elemento para pedir datos (JOptionPane por ejemplo).


import java.util.Scanner;

public class JavaApplication219 {

    
    public static void main(String[] args) {
        
       Scanner sn = new Scanner(System.in);
       boolean salir = false;
       int opcion; //Guardaremos la opcion del usuario
        
    }
    
}

Ahora vamos a hacer que vaya pidiendo opciones hasta que nosotros queramos (esto lo vemos en el próximo paso), lo haremos con un while, se puede hacer con un do while.


import java.util.Scanner;

public class JavaApplication219 {

    
    public static void main(String[] args) {
        
       Scanner sn = new Scanner(System.in);
       boolean salir = false;
       int opcion; //Guardaremos la opcion del usuario
       
       while(!salir){
           
       }
       
    }
    
}

Esto hará que hasta que nosotros no pongamos salir=true, no salgamos.

Ahora pondremos las opciones que queramos mostrar, os recomiendo poner con System.out.println y con este formato “<numero opcion>. <opcion>

Yo suelo poner una opción de más llamada “Salir” para que pueda salir de la aplicación.

También vamos a pedir un número que seria la opción que queremos realizar.

Vamos a ver como sería con tres opciones:


import java.util.Scanner;

public class JavaApplication219 {

    
    public static void main(String[] args) {
        
       Scanner sn = new Scanner(System.in);
       boolean salir = false;
       int opcion; //Guardaremos la opcion del usuario
       
       while(!salir){
           
           System.out.println("1. Opcion 1");
           System.out.println("2. Opcion 2");
           System.out.println("3. Opcion 3");
           System.out.println("4. Salir");
           
           System.out.println("Escribe una de las opciones");
           opcion = sn.nextInt();
           
       }
       
    }
    
}

Ahora vamos a usar un switch para según la opción realizar la tarea que necesitemos.

En cada case, pondremos el código que necesitemos (funciones, pedir algo, etc).

En el ultimo case, ponemos salir=true; para indicar que queremos salir (el numero del case puede variar según el numero de opciones).

También ponemos un default para evitar tener que comprobar que el numero este en el rango de las opciones.


import java.util.Scanner;

public class JavaApplication219 {

    
    public static void main(String[] args) {
        
       Scanner sn = new Scanner(System.in);
       boolean salir = false;
       int opcion; //Guardaremos la opcion del usuario
       
       while(!salir){
           
           System.out.println("1. Opcion 1");
           System.out.println("2. Opcion 2");
           System.out.println("3. Opcion 3");
           System.out.println("4. Salir");
           
           System.out.println("Escribe una de las opciones");
           opcion = sn.nextInt();
           
           switch(opcion){
               case 1:
                   System.out.println("Has seleccionado la opcion 1");
                   break;
               case 2:
                   System.out.println("Has seleccionado la opcion 2");
                   break;
                case 3:
                   System.out.println("Has seleccionado la opcion 3");
                   break;
                case 4:
                   salir=true;
                   break;
                default:
                   System.out.println("Solo números entre 1 y 4");
           }
           
       }
       
    }
    
}

¿Que pasaría si pusiera una cadena en lugar de un numero? Tendríamos un error.

Así que vamos a poner una excepción especial.


import java.util.InputMismatchException;
import java.util.Scanner;

public class JavaApplication219 {

    public static void main(String[] args) {

        Scanner sn = new Scanner(System.in);
        boolean salir = false;
        int opcion; //Guardaremos la opcion del usuario

        while (!salir) {

            System.out.println("1. Opcion 1");
            System.out.println("2. Opcion 2");
            System.out.println("3. Opcion 3");
            System.out.println("4. Salir");

            try {

                System.out.println("Escribe una de las opciones");
                opcion = sn.nextInt();

                switch (opcion) {
                    case 1:
                        System.out.println("Has seleccionado la opcion 1");
                        break;
                    case 2:
                        System.out.println("Has seleccionado la opcion 2");
                        break;
                    case 3:
                        System.out.println("Has seleccionado la opcion 3");
                        break;
                    case 4:
                        salir = true;
                        break;
                    default:
                        System.out.println("Solo números entre 1 y 4");
                }
            } catch (InputMismatchException e) {
                System.out.println("Debes insertar un número");
                sn.next();
            }
        }

    }

}


La excepción elegida es InputMismatchException, esta excepción salta cuando no lo introducido no se puede convertir a numero en nuestro caso.

Ponemos sn.next() para evitar que entre en un bucle infinito, solo si usáis Scanner.

En el anterior código, ya tendríamos nuestro menú completado, copialo y pruebalo tu mismo.

Os muestro un ejemplo:

Se puede modificar a vuestro gusto.

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Etiquetas

10 comments

  1. no entiendo NADA

  2. esta bien dificil hijo de perra, ojala y te penetren por el ano y te hechen cal con caca

  3. Excelente explicación!!!
    Me ha ayudado mucho, de verdad gracias.

  4. Que tal, necesito una orientación
    Quiero realizar el menu, pero adentro hay submenus, que quiero que en algún momento regresen al menu principal

    Pero no he podido seguir la secuencia del programa, siempre me cae la duda en cómo regreso al menú principal o a un menú anterior

    Acaso tengo que hacer muchos while anidados
    while(menu_principal){
    while(submenu1){
    while(submenu2){

    }
    }
    }

    Si verdad, es lo único que se me ocurre

  5. Felicitaciones, muy buen ejemplo

  6. Men! muchas gracias, me sirvió bastante.

  7. En el año 2015 presenté un trabajo en la Uned en el que programé un menú Java exactamente igual, sólo que con una instrucción condicional “if” en lugar de “switch”.

  8. como saber cual es la opcion mas elegida?

  9. Muchas gracias, me sirvió bastante en la realización de un programa escolar. Muy bueno.

  10. Buen día Alguien me puede ayudar necesito hacer un proyecto para la u pero me piden lo siguiente

    Descripción:
    Desarrollará una aplicación en lenguaje Java utilizando Netbeans con salida a consola (no
    gráficos o ambiente mixto). La aplicación simulara la venta de vehículos aéreos, terrestres y
    marítimos.
    La aplicación contendrá un menú de opciones, el inventario de los vehículos deberá estar
    incrustado en el código. La información del comprador se deberá ser ingresada en tiempo de
    ejecución y deberá existir una opción la cual informara si el producto (vehículo) a comprar
    esta aun disponible. Podrá realizarse más de una compra durante la ejecución del programa.
    Los pagos pueden hacerse en efectivo, tarjeta de crédito, visa cuotas, préstamo etc.

    Alguien me puede ayudar con el codigo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *