27

Javaを使ってプログラミングしています。ユーザーがコンソールベース
のプログラムでエンターキーを押したかどうかを認識できるコードを書き込もうとしています。

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

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

4

2 に答える 2

33

これは java.util.Scanner を使用して機能し、複数の「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は、標準入力ストリーム(キーボード) から読み取る new を初期化し、そこから 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」キーが押されたときに何かを実行したりした後、スキャナーに別の行があるかどうかを確認します。標準入力ストリームの場合、このメソッドは、ストリームが閉じられるか、プログラムの実行が終了するか、さらに入力が提供されるまで「ブロック」します。

于 2013-08-17T02:41:28.607 に答える