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

Deja un comentario

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