У меня есть консольное приложение, которое после выполнения своих задач должно давать пользователю обратную связь, например «операция завершена» или «операция не удалась» и подробное описание ошибки.
Дело в том, что если я просто «позволю ему поработать», выходное сообщение будет напечатано, но вскоре после этого консоль закроется, не оставив времени на чтение сообщения.
Насколько я помню, в C ++ каждое консольное приложение заканчивалось «нажатием любой клавиши для выхода» или чем-то в этом роде. В C # я могу смоделировать это поведение с помощью
Console.ReadKey();
Но как это сделать на Java? Я использую класс Scanner, но учитывая, что "input" - это мой экземпляр Scanner:
input.next()
System.exit(0);
Подойдет «любой ключ», кроме возврата, что здесь немало. Есть указатели?
источник
import java.io.IOException;
также требуется добавление .Я хотел бы добавить, что обычно вы хотите, чтобы программа ждала, только если она подключена к консоли. В противном случае (например, если это часть конвейера ) нет смысла печатать сообщение или ждать. Для этого вы можете использовать Java
Console
следующим образом: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(); } }
источник
Проблема с вводом консоли Java заключается в том, что он буферизирован и требует ввода клавиши для продолжения.
Есть эти два обсуждения: обнаружение и действие на клавиши направления клавиатуры в Java и анализ ввода клавиатуры Java в консольном приложении.
Последний из них использовал JLine для решения своей проблемы.
Лично я им не пользовался.
источник
Вы можете просто использовать
nextLine();
как паузуimport java.util.Scanner // // Scanner scan = new Scanner(System.in); void Read() { System.out.print("Press any key to continue . . . "); scan.nextLine(); }
Однако любая кнопка, которую вы нажимаете, кроме
Enter
означает, что вам нужно будет нажать Enter после этого, но я нашел это лучше, чемscan.next();
источник
Scanner scan=new Scanner(System.in);
Я использовал простой взлом, попросив окна использовать команды cmd и отправив его на 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(); } }
источник
Я вставил то, что сказал x4u. Eclipse хотел, чтобы вокруг него был блок try catch, поэтому я позволил ему сгенерировать его для меня.
try { System.in.read(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
Вероятно, на нем могут быть всевозможные навороты, но я думаю, что для новичков, которые хотят, чтобы окно командной строки не выходило из этого, должно быть хорошо.
Также я не знаю, насколько это распространено (я впервые делаю файлы jar), но он не запускался сам по себе, только через файл bat.
Это то, что было у файла bat в той же папке. Кажется, проблема с установкой.
Руководство по Eclipse взято из: http://eclipsetutorial.sourceforge.net/index.html
Часть ответа также пришла из: Oracle Thread
источник
public static void main(String args[]) { Scanner s = new Scanner(System.in); System.out.println("Press enter to continue....."); s.nextLine(); }
Это
nextline
довольно хороший вариант, поскольку он поможет нам запускать следующую строку при каждом нажатии клавиши ввода.источник
Простой трюк:
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();
источник