1. ホーム
  2. java

[解決済み] Java using scanner Enterキーが押された

2022-02-10 15:28:11

質問内容

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

javaを使用してこれを行うにはどうしたらよいでしょうか。私は、これはスキャナまたは、バッファード入力リーダーのいずれかを使用して行うことができると言われています。私はバッファードインプットリーダーを理解していません(または、どのように使用するのか知りません)。

スキャナを使用してこれを実行しようとしましたが、エンターキーを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!");

また、バッファード・インプット・リーダーの利点は何でしょうか?

どのように解決するのですか?

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 から読み込んでいます。 標準入力ストリーム (キーボード)から1行だけ読み取ります。

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

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

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

入力から "enter"(または return など)キーが与えられた場合、そのキーは nextLine() メソッドは空の文字列を返します。文字列が空かどうかを確認することで、そのキーが押されたかどうかを判断することができるのです。 ここでは、テキスト エンターキーを読み取る が出力されますが、ここでは好きな動作をさせることができます。

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

最後に、内容を表示したり、"enter" キーが押されたときに何かをした後、スキャナが別の行を持っているかどうかをチェックします。標準入力ストリームに対して、このメソッドは、ストリームが閉じられるか、プログラムの実行が終了するか、さらなる入力が提供されるまで "block" されます。