1. ホーム
  2. その他

[解決済み】JavaコンソールのプロンプトでENTERを入力してから次へ進む【重複あり

2022-01-03 16:13:46

質問

私は単純なストーリーを作っているのですが、時々ユーザーにENTERを押すように促すことがあります。最初にプロンプトを出したときはうまくいくのですが、その後すぐに他のプロンプトを実行してしまいます。おそらく、ENTERキーを押した時点で、すでにプロンプトのチェックを実行しているため、プログラムが非常に速く動作するのだと思います。

何か思い当たることはありますか?以下、コード。

    System.out.println("...*You wake up*...");
    System.out.println("You are in class... you must have fallen asleep.");
    System.out.println("But where is everybody?\n");
    promptEnterKey();

    System.out.println("You look around and see writing on the chalkboard that says CBT 162");
    promptEnterKey();

//////////////////////////////////////////////////////

public void promptEnterKey(){
    System.out.println("Press \"ENTER\" to continue...");
    try {
        System.in.read();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

解決方法は?

その理由 System.in.read が2回目にブロックされないのは、ユーザーが1回目にENTERを押したときに、2バイトが \r\n .

代わりに Scanner のインスタンスを作成します。

public void promptEnterKey(){
   System.out.println("Press \"ENTER\" to continue...");
   Scanner scanner = new Scanner(System.in);
   scanner.nextLine();
}