Tengo una aplicación de consola que luego de realizar sus tareas, debe dar retroalimentación al usuario, como "operación completada" o "operación fallida" y el error detallado.
El caso es que si simplemente "lo dejo correr", el mensaje de salida se imprimirá pero la consola se cerrará poco después, sin dejar tiempo para leer el mensaje.
Por lo que recuerdo, en C ++, cada aplicación de consola terminará con "presione cualquier tecla para salir" o algo así. En C # puedo simular este comportamiento con un
Console.ReadKey();
Pero, ¿cómo puedo hacerlo en Java? Estoy usando la clase Scanner, pero dado que "input" es mi instancia de Scanner:
input.next()
System.exit(0);
"Cualquier clave" funcionará, excepto la devolución, que es un gran problema aquí. ¿Algún consejo?
fuente
import java.io.IOException;
también se requiere agregar .Me gustaría agregar que, por lo general, querrá que el programa espere solo si está conectado a una consola. De lo contrario (como si fuera parte de una canalización ) no tiene sentido imprimir un mensaje o esperar. Para eso, podrías usar Java
Console
como este:import java.io.Console; // ... public static void waitForEnter(String message, Object... args) { Console c = System.console(); if (c != null) { // printf-like arguments if (message != null) c.format(message, args); c.format("\nPress ENTER to proceed.\n"); c.readLine(); } }
fuente
El problema con la entrada de la consola Java es que es una entrada almacenada en búfer y requiere una tecla Intro para continuar.
Hay estas dos discusiones: Detectar y actuar sobre las teclas de dirección del teclado en Java y el análisis de entrada del teclado Java en una aplicación de consola
El último de los cuales utilizó JLine para resolver su problema.
Yo personalmente no lo he usado.
fuente
Puedes usarlo
nextLine();
como pausaimport java.util.Scanner // // Scanner scan = new Scanner(System.in); void Read() { System.out.print("Press any key to continue . . . "); scan.nextLine(); }
Sin embargo, cualquier botón que presione excepto
Enter
significa que tendrá que presionar Enter después de eso, pero lo encontré mejor quescan.next();
fuente
Scanner scan=new Scanner(System.in);
Usé un truco simple, pidiéndole a Windows que usara comandos cmd y lo enviara a null.
// Class for Different hacks for better CMD Display import java.io.IOException; public class CMDWindowEffets { public static void getch() throws IOException, InterruptedException { new ProcessBuilder("cmd", "/c", "pause > null").inheritIO().start().waitFor(); } }
fuente
He incluido lo que dijo x4u. Eclipse quería un bloque de captura de prueba a su alrededor, así que dejé que lo generara por mí.
try { System.in.read(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
Probablemente pueda tener todo tipo de campanas y silbidos, pero creo que para los principiantes que desean una ventana de línea de comandos que no salga, esto debería estar bien.
Además, no sé qué tan común es esto (esta es la primera vez que hago archivos jar), pero no se ejecutaría solo, solo a través de un archivo bat.
Lo anterior es lo que tenía el archivo bat en la misma carpeta. Parece ser un problema de instalación.
El tutorial de Eclipse vino de: http://eclipsetutorial.sourceforge.net/index.html
Algunas de las respuestas también provienen de: Oracle Thread
fuente
public static void main(String args[]) { Scanner s = new Scanner(System.in); System.out.println("Press enter to continue....."); s.nextLine(); }
Esta
nextline
es una opción bastante buena, ya que nos ayudará a ejecutar la siguiente línea cada vez que se presione la tecla Intro.fuente
Un simple truco:
import java.util.Scanner; /* Add these codes at the end of your method ...*/ Scanner input = new Scanner(System.in); System.out.print("Press Enter to quit..."); input.nextLine();
fuente