Hola a tots, avui us vaig a ensenyar com fer un menú d’en consola Java.
És normal que una aplicació li donem una sèrie d’opcions a l’usuari perquè pugui realitzar diferents opcions sense un ordre definit.
Anem a explicar pas a pas com es pot fer un simple menú de X opcions.
tot això ho fare en un main, es pot fer en una funció o on vulgueu.
el primer que necessitem és un booleà, una variable numèrica (segons com volgueu demanar les opcions) i un Scanner o altre element per demanar dades (JOptionPane per exemple).
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 } }
Ara farem que vagi demanant opcions fins que nosaltres vulguem (això ho veiem en el proper pas), ho farem amb un while, es pot fer amb 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){ } } }
Això farà que fins que nosaltres no posem sortir = true, no sortim.
Ara posarem les opcions que vulguem mostrar , Us recomano posar amb System.out.println i amb aquest format “< nombre opció >. < opció > “
Jo sòl posar una opció de més anomenada” Sortir “perquè pugui sortir de la aplicació.
També demanarem un nombre que seria l’opció que volem realitzar.
anem a veure com seria amb tres opcions:
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(); } } }
Ara farem servir un switch per a segons l’opció realitzar la tasca que necessitem.
a cada casi, posarem el codi que necessitem (funcions, demanar alguna cosa, etc).
En l’últim casi, posem sortir = true; per indicar que volem sortir (el nombre de l’casi pot variar segons el nombre d’opcions).
També posem un impagament per evitar haver de comprovar que el nombre aquest en el rang de les opcions.
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 passaria si posés una cadena en lloc d’un nombre? Tindríem un error.
Així que anem a posar una excepció 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(); } } }}
L’excepció triada és InputMismatchException, aquesta excepció salta quan no ho introduït no es pot convertir a número en el nostre cas.
Posem sn.next () per evitar que entri en un bucle infinit, només si feu servir Scanner.
En l’anterior codi, ja tindríem el nostre menú completat, copia’l i prova’l tu mateix.
Us mostro un exemple:
Es pot ajustar al vostre gust.
Espero que us sigui d’ajuda. Si teniu dubtes, pregunteu. Estem per ajudar-te.