studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones java console user-input java.util.scanner

java - programacion - Comandos de entrada continua



manual de programacion android pdf (1)

Esta es una forma simple de implementar un bucle de entrada:

Scanner sc = new Scanner(System.in); for (prompt(); sc.hasNextLine(); prompt()) { String line = sc.nextLine().replaceAll("/n", ""); // return pressed if (line.length == 0) continue; // split line into arguments String[] args = line.split(" "); // process arguments if (args.length == 1) { if (args[0].equalsIgnoreCase("exit")) System.exit(0); if (args[0].equalsIgnoreCase("dosomething")) // do something } else if (args.length == 2) { // do stuff with parameters } }

Asumiendo prompt() imprime el prompt aquí.

Mi programa leerá los comandos del teclado del usuario en forma de " parameter command " con un espacio intermedio. Sigue llevando a cabo comandos individuales hasta que el siguiente comando sea " exit ". Además, si el usuario se equivoca, el programa debería mostrar un error pero continuar solicitando comandos (una característica que no creo haber completado).

¿El siguiente código es una buena forma de implementar esto? ¿Podría manejar al usuario simplemente presionando la tecla enter con el comando oa, entrada de basura, etc.? En todo caso, me encantaría saber si hay una mejor forma idiomática para implementar esto.

String command = ""; String parameter = ""; Scanner dataIn = new Scanner(System.in); while (!command.equals("exit")) { System.out.print(">> "); command = dataIn.next().trim(); parameter = dataIn.next().trim(); //should ^ these have error handling? if (command.equals("dothis")) { //do this w/ parameter.. } else if (command.equals("dothat")) { //do that w/ parameter.. } //else if... {} else { system.out.println("Command not valid."); } } System.out.println("Program exited by user.");

Nota: Tomé esta clase sin una sola idea de lo que es el manejo de excepciones, por lo que cualquier puntero en esa área es muy apreciado :)