Java でユーザ入力を取得する

Rupam Yadav 2023年10月12日
  1. Java でユーザ入力を取得するための Scanner の使い方
  2. Java でユーザの入力を取得するための BufferedReader
Java でユーザ入力を取得する

この記事では、Java でユーザ入力を取得するための最良の方法について説明します。多くの方法がありますが、それらの方法のいくつかはすでに非推奨となっていますので、それらを避けることにします。

Java でユーザ入力を取得するための Scanner の使い方

目的を達成するために Scanner を使用することができます。このクラスのオブジェクトを作成し、そのコンストラクタに System.in を渡す必要があります。

次のステップは、Scanner オブジェクトを使い、以下のメソッドのいずれかを呼び出すことです。各メソッドは異なるデータ型の入力値を受け取ります。

メソッド 説明
next() 文字列値
nextInt() 整数値
nextByte() バイト値
nextLong() 長整数値
nextFloat() 浮動小数点値
nextDouble() 倍精度浮動小数点

以下の例では、整数値を受け取る nextInt() メソッドを使用します。

例:

import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner inputReader = new Scanner(System.in);
    System.out.println("Enter a number: ");
    int number = inputReader.nextInt();

    System.out.println("Your entered number was: " + number);
  }
}

出力:

Enter a number: 
454
Your entered number was: 454

Java でユーザの入力を取得するための BufferedReader

ユーザからの入力を取得できる別のクラスがあります。BufferedReader は文字ストリームを使って入力からテキストを読み取るのに対して、Scanner はプリミティブ型の入力の場合に利用することができます。

つまり、BufferedReader クラスには nextInt() のようなメソッドはなく、readLine() メソッドがあります。

下の例では、入力を int として受け取っています。入力を読み込んでから Integer.parseInt(String) を用いて int 型に変換しなければならません。外部入力デバイスがない場合は IOException が発生する可能性があるので、try-catch ブロックで文を囲む必要があります。

例:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
  public static void main(String[] args) throws IOException {
    InputStreamReader isr = new InputStreamReader(System.in);
    BufferedReader br = new BufferedReader(isr);

    try {
      System.out.println("Please enter a number: ");
      String s = br.readLine();
      int i = Integer.parseInt(s);

      System.out.println("Your entered number was: " + i);
    } catch (IOException e) {
      e.printStackTrace();
    }

    br.close();
  }
}

出力:

Please enter a number: 
454
Your entered number was: 454
著者: 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 Input