Enter キーを押して Java で続行する

Rupam Yadav 2023年10月12日
Enter キーを押して Java で続行する

この記事では、ユーザーが Enter キーを押すまでコンソールを保留にする方法を説明します。その後、次のメッセージが表示されます。次の例では、Scanner クラスを使用して 3つの入力を取得し、それらをコンソールに表示します。

Java で追加の nextLine() を使用して Enter キーを待つ

この例では、Scanner クラス sc のオブジェクトを作成します。Scanner はテキストをスキャンし、intString などのプリミティブ型を解析します。このクラスには、入力操作で使用される多くのメソッドが付属しています。最も一般的に使用されるメソッドは、nextInt()nextLinenextDouble などです。

以下の例では、問題がどこにあるかを確認し、次の問題でそれを解決するための手法を使用します。

ここでは、3つの入力を取ります。int タイプで、次の 2つは String タイプです。Scanner クラスを使用して、最初に nextInt() メソッドを呼び出し、年齢の入力を int 型変数に取得します。次に、名と名前の入力を取得するために、2つの sc.nextLine() メソッドと 2つの変数を使用してそれらを格納します。最後に、変数のすべての値を出力に表示します。

問題は、ユーザーが age の値を入力して Enter キーを押したときに発生します。コンソールは firstName の入力を取得することになっていますが、それをスキップして直接 lastName に移動します。以下の出力は、問題を明確に示しています。

import java.util.Scanner;

public class EnterContinue {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("Enter your age: ");
    int age = sc.nextInt();

    System.out.print("Enter your First Name: ");
    String firstName = sc.nextLine();

    System.out.print("Enter your last Name: ");
    String lastName = sc.nextLine();

    System.out.println("Your Info:\nAge: " + age + "\nFull Name: " + firstName + " " + lastName);
  }
}

出力:

Enter your age: 23
Enter your First Name: Enter your last Name: John
Your Info:
Age: 23
Full Name:  John

Process finished with exit code 0

問題がわかったので、解決策と、最初に問題が発生する理由について説明します。int 値を入力として受け取ると、メソッド nextInt()int 値を読み取り、改行を読み取ることができません。これが、int を読んだ後に Enter キーを押すと、コンソールがそれを改行と見なし、次のステートメントにスキップする理由です。

nextInt() 関数の後に追加の nextLine() メソッドを使用する必要があります。これにより、改行がスキップされ、この問題に対処するために次の行が表示されます。出力では、前の例では不可能だった名を入力できるようになっていることがわかります。

import java.util.Scanner;

public class EnterContinue {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("Enter your age: ");
    int age = sc.nextInt();

    System.out.print("Enter your First Name: ");
    String firstName = sc.nextLine();
    sc.nextLine();

    System.out.print("Enter your last Name: ");
    String lastName = sc.nextLine();

    System.out.println("Your Info:\nAge: " + age + "\nFull Name: " + firstName + " " + lastName);
  }
}

出力:

Enter your age: 5
Enter your First Name: gfd
Enter your last Name: gfgf
Your Info:
Age: 5
Full Name:  gfgf
著者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

関連記事 - Java Scanner