System.out.print («Калькулятор») не показывает вывод, если за ним следует сканер или BufferReader, который принимает System.in в IntelliJ IDEA - PullRequest
0 голосов
/ 16 октября 2019

Итак, я хочу сделать калькулятор командной строки, который принимает несколько аргументов после слова «Калькулятор». Но со следующими кодами я не могу этого добиться. В обоих из этих методов gradle ждет, чтобы прочитать строку, прежде чем отобразить слово «Калькулятор».

Использование сканера

System.out.print("Calculator ");
Scanner sc = new Scanner(System.in);
String inputString;
inputString = sc.nextLine();
String[] args = inputString.split( "\\s+" );

Использование BufferReader

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Calculator ");
String str= br.readLine();
String[] args = str.split( "\\s+" );

Однако System.out.println ("Калькулятор"") отображает слово без проблем. Но это не в соответствии. Так что это не работает, как я хочу. Изменение порядка строк кода также не помогло.

System.Console (). Printf () также не вариант, так как я использую Intellij IDEA. Так может кто-нибудь, пожалуйста, помогите мне с этим, чтобы я мог получить встроенный читатель ввода. Я также попытался синхронизировать метод печати, реализовав его отдельно в методе. Это не сработало.

Наконец, я хочу достичь следующего формата

Калькулятор max 12 23 25 45

  • Здеськурсивом является ввод для чтения.
  • Жирная часть должна быть напечатана программой.

Это полный код enter image description here

до ввода ввода с консоли ..

enter image description here

после ввода ввода

enter image description here

Последнее обновление

Поэтому я попытался сделать то же самое с проектом Maven. Оба вышеперечисленных метода отлично работали, когда я работал с проектом maven в Intellij.

Поэтому это должно быть как-то связано с способом запуска проекта gradle. Я хочу знать, есть ли шанс, что это произойдет?

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

Вместо sc.nextLine() вы должны использовать sc.next().

0 голосов
/ 16 октября 2019

Позвоните System.out.flush() перед тем, как начать обработку ввода после того, как вы сделали какой-либо вывод. Среда IDE подключается к процессам с помощью канала, который не включается автоматически на каждом выходе.

...