Java: как получить входные данные из System.console()
Я пытаюсь использовать класс Console для получения входных данных от пользователя, но при вызове возвращается нулевой объект System.console(). Должен ли я что-либо изменить перед использованием System.console?
System.console() возвращает null в IDE. Итак, если вам действительно нужно использовать System.console(), прочитайте это решение от McDowell.
Ответ 2
Scannerin=newScanner(System.in);
inti= in.nextInt(); Strings= in.next();
Ответ 3
Существует несколько способов прочитать строку ввода с вашей консоли / клавиатуры. Следующий пример кода показывает, как прочитать строку с консоли / клавиатуры с помощью Java.
publicclassConsoleReadingDemo {
publicstaticvoidmain(String[] args) {
// ==== BufferedReaderreader=newBufferedReader(newInputStreamReader(System.in)); System.out.print("Please enter user name : "); Stringusername=null; try { username = reader.readLine(); } catch (IOException e) { e.printStackTrace(); } System.out.println("You entered : " + username);
// ===== In Java 5, Java.util,Scanner is used for this purpose. Scannerin=newScanner(System.in); System.out.print("Please enter user name : "); username = in.nextLine(); System.out.println("You entered : " + username);
// ====== Java 6 Consoleconsole= System.console(); username = console.readLine("Please enter user name : "); System.out.println("You entered : " + username);
} }
В последней части кода используется java.io.Console класс. вы не можете получить экземпляр консоли из System.console() при запуске демонстрационного кода через Eclipse. Потому что eclipse запускает ваше приложение как фоновый процесс, а не как процесс верхнего уровня с системной консолью.
Ответ 4
Это будет зависеть от вашей среды. Например, если вы запускаете Swing UI через javaw, то там нет консоли для отображения. Если вы работаете в IDE, это будет во многом зависеть от того, как конкретная IDE обрабатывает консольный ввод-вывод.
Хотя из командной строки все должно быть в порядке. Пример:
import java.io.Console;
publicclassTest {
publicstaticvoidmain(String[] args)throws Exception { Consoleconsole= System.console(); if (console == null) { System.out.println("Unable to fetch console"); return; } Stringline= console.readLine(); console.printf("I saw this line: %s", line); } }
Запустите это просто с помощью java:
> javac Test.java > java Test Foo <---- entered by the user I saw this line: Foo <---- program output
Другой вариант - использовать System.in, который вы можете обернуть в BufferedReader для чтения строк, или использовать Scanner (снова обертывание System.in).