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);

этот код отлично работает