Java с помощью сканера enter нажата клавиша
я программирую с помощью Java.
Я пытаюсь написать код, который может распознать, если пользователь нажимает клавишу ENTER в программы консоли.
как я могу это сделать с помощью java. Мне сказали, что это можно сделать с помощью сканера или буфера ввода читателя. Я не понимаю(или не знаю как использовать) буферизованный ввод читателя.
Я попытался сделать это с помощью сканера, но после нажатия enter дважды программа завершается, и это не работа
Scanner readinput = new Scanner(System.in);
String enterkey = "Hola";
System.out.print(enterkey);
enterkey = readinput.nextLine();
System.out.print(enterkey);
if(enterkey == ""){
System.out.println("It works!");
спасибо
-- edit --
следующий код работает с помощью equals
метод для строки вместо ==
Scanner readinput = new Scanner(System.in);
String enterkey = "Hola";
System.out.print(enterkey);
enterkey = readinput.nextLine();
System.out.print(enterkey);
if(enterkey.equals("")){
System.out.println("It works!");
как это можно сделать, и каковы плюсы для этого с помощью буферизованного считывателя ввода?
2 ответов
это работает с использованием java.утиль.Сканер и примет несколько нажатий клавиш "enter":
Scanner scanner = new Scanner(System.in);
String readString = scanner.nextLine();
while(readString!=null) {
System.out.println(readString);
if (readString.isEmpty()) {
System.out.println("Read Enter Key.");
}
if (scanner.hasNextLine()) {
readString = scanner.nextLine();
} else {
readString = null;
}
}
чтобы сломать его:
Scanner scanner = new Scanner(System.in);
String readString = scanner.nextLine();
эти строки инициализируют новый Scanner
это чтение из стандартный входной поток (клавиатура) и считывает с него одну строку.
while(readString!=null) {
System.out.println(readString);
пока сканер все еще возвращает ненулевые данные, распечатайте каждую строку на экране.
if (readString.isEmpty()) {
System.out.println("Read Enter Key.");
}
если ключ" enter " (или return, или что-то еще) поставленная вход,nextLine()
метод вернет пустую строку; проверив, пуста ли строка, мы можем определить, была ли нажата эта клавиша. Вот текст Читать Введите Ключ печатается, но вы можете выполнить любое действие, которое вы хотите здесь.
if (scanner.hasNextLine()) {
readString = scanner.nextLine();
} else {
readString = null;
}
наконец, после печати содержимого и / или выполнения чего-либо при нажатии клавиши" enter "мы проверяем, есть ли у сканера другая строка; для стандартного входного потока этот метод будет" блокировать" пока поток не будет закрыт, выполнение программы не завершится или не будет предоставлен дополнительный ввод.
Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
Double d = scan.nextDouble();
String newStr = "";
Scanner charScanner = new Scanner( System.in ).useDelimiter( "(\b|\B)" ) ;
while( charScanner.hasNext() ) {
String c = charScanner.next();
if (c.equalsIgnoreCase("\r")) {
break;
}
else {
newStr += c;
}
}
System.out.println("String: " + newStr);
System.out.println("Int: " + i);
System.out.println("Double: " + d);
этот код отлично работает