Я пытаюсь использовать класс консоли для получения ввода от пользователя, но при вызове возвращается нулевой объект System.console()
. Нужно ли что-то менять перед использованием System.console?
Console co=System.console();
System.out.println(co);
try{
String s=co.readLine();
}
Ответы:
Использование консоли для чтения ввода (можно использовать только вне IDE):
Другой способ (работает везде):
System.console () возвращает нуль в IDE.
Так что, если вам действительно нужно использовать
System.console()
, прочитайте это решение от McDowell .источник
readLine()
которого не существуетInputStreamReader
.источник
nextLine()
работать с ним очень грязно. В лучшем случае это доставит вам головную боль при попытке получить целые строки из консоли.in.nextLine()
возникнут проблемы?java.util.NoSuchElementException
что я не совсем понимаю.Есть несколько способов прочитать строку ввода с вашей консоли / клавиатуры. В следующем примере кода показано, как читать строку с консоли / клавиатуры с помощью Java.
Последняя часть кода используется
java.io.Console
классом. Вы не можете получить экземпляр консолиSystem.console()
при запуске демонстрационного кода через Eclipse. Потому что eclipse запускает ваше приложение как фоновый процесс, а не как процесс верхнего уровня с системной консолью.источник
Это будет зависеть от вашей среды. Если вы используете Swing UI с помощью
javaw
, например, то есть не консоль для отображения. Если вы работаете в IDE, это будет во многом зависеть от конкретной IDE, обрабатывающей консольный ввод-вывод.Хотя из командной строки все должно быть хорошо. Образец:
Запустите это только с
java
:Другим вариантом является использование
System.in
, которое вы можете заключить вBufferedReader
строку для чтения или использоватьScanner
(снова переносSystem.in
).источник
Нашел здесь хороший ответ относительно чтения с консоли, здесь другой способ использовать «Сканер» для чтения с консоли:
источник
close()
сканер в этом случае, потому что он закроет System.in и не позволит вашему приложению читать его позже. (Чтение позже выдает ошибку «строка не найдена»)Попробуй это. надеюсь, это поможет.
источник
Следующее принимает ответ athspk и превращает его в ответ, который непрерывно повторяется до тех пор, пока пользователь не введет «выход». Я также написал ответ, где я взял этот код и сделал его тестируемым.
Пример вывода:
источник
Я написал библиотеку Text-IO , которая может решить проблему отсутствия значения System.console () при запуске приложения из среды IDE.
Он вводит уровень абстракции, аналогичный тому, который был предложен Макдауэллом . Если System.console () возвращает null, библиотека переключается на консоль на основе Swing.
Кроме того, Text-IO имеет ряд полезных функций:
Пример использования:
На этом рисунке вы можете увидеть приведенный выше код в консоли на базе Swing.
источник
Используйте System.in
http://www.java-tips.org/java-se-tips/java.util/how-to-read-input-from-console.html
источник