web-dev-qa-db-ja.com

JavaスキャナーのEnterキーを押して使用

Javaを使用してプログラミングしています。
ユーザーがconsoleベースのプログラムでEnterキーを押した場合に認識できるコードを記述しようとしています。

Javaを使用してこれを行うにはどうすればよいですか。これは、スキャナーまたはバッファー付き入力リーダーを使用して実行できると言われています。バッファ付き入力リーダーがわかりません(または使用方法がわかりません)。

スキャナーを使用してこれを実行しようとしましたが、Enterを2回押すとプログラムが終了し、動作しません

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

ありがとう

-編集-次のコードは、==の代わりに文字列に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!");

どのようにこれを行うことができますか?また、バッファ付き入力リーダーを使用してこれを行うことの長所は何ですか?

18
H J

これはJava.util.Scannerを使用して機能し、複数の「入力」キーストロークを取ります。

_    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を初期化し、そこから1行を読み込みます。

_    while(readString!=null) {
        System.out.println(readString);
_

スキャナーがまだnull以外のデータを返している間に、各行を画面に印刷します。

_        if (readString.isEmpty()) {
            System.out.println("Read Enter Key.");
        }
_

「enter」(またはreturnなど)キーが入力によって提供される場合、nextLine()メソッドは空の文字列を返します。文字列が空かどうかを確認することで、そのキーが押されたかどうかを判断できます。ここでは、テキストRead Enter Keyが出力されますが、ここで任意のアクションを実行できます。

_        if (scanner.hasNextLine()) {
            readString = scanner.nextLine();
        } else {
            readString = null;
        }
_

最後に、コンテンツを印刷し、「Enter」キーが押されたときに何かを実行した後、スキャナーに別の行があるかどうかを確認します。標準入力ストリームの場合、このメソッドは、ストリームが閉じられるか、プログラムの実行が終了するか、さらに入力が提供されるまで「ブロック」します。

25
Caleb Brinkman
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);

このコードは正常に動作します

1
priya raj