Javaで標準入力を取得する:Scanner

Java でキーボードから標準入力を取得するためには、Scanner クラスを使用します。ここでは Scanner を用いた標準入力の取得方法について説明します。

Scanner で標準入力を取得する

Scanner クラスは標準入力を取得し、処理するためのメソッドが数多く備えられています。

標準入力を取得するときは、まず以下のように記述します。

Scanner scanner = new Scanner(System.in);

引数に System.in を指定して Scanner クラスのインスタンスを生成します。

1行分入力を取得する:nextLine()

以下は標準入力から1行分の入力を取得するサンプルです。

import java.util.Scanner;
 
class Sample {
  public static void main(String args[]) {
    Scanner scanner = new Scanner(System.in);
    System.out.print("Input > ");

    String input = scanner.nextLine();

    System.out.println(input);
    scanner.close();
  }
}

以下はプログラムを実行し「dog」を入力した結果です。

Input > dog
dog

このプログラムは入力した文字列を取得し、リターンキーが入力されたらその文字列をそのまま表示します。nextLine() で1行分の入力を取得しています。リターンキーが入力されるまでプログラムを待機され、入力があれば次のコードが実行されます。

空白文字までの入力を取得する:next()

nextLine() は1行分の入力を取得しますが、next() は空白文字までの文字列を取得します。

以下は2つの文字列を取得するサンプルです。

import java.util.Scanner;
 
class Sample {
  public static void main(String args[]) {
    Scanner scanner = new Scanner(System.in);
    System.out.print("Input > ");

    String input1 = scanner.next();
    String input2 = scanner.next();

    System.out.println(input1);
    System.out.println(input2);
    scanner.close();
  }
}

以下はプログラムを実行し「dog cat」を入力した結果です。

Input > dog cat
dog
cat

このプログラムでは next() で空白文字までの文字列を取得しています。input1 には「dog」が、input2 には「cat」が格納されています。

数値の入力を取得する:nextInt()

nextLine() や next() は入力を String 型の文字列として取得しますが、nextInt() は取得した文字列を Int 型の数値として取得します。他にも nextDouble() や nextFloat() などといったメソッドも存在します。

以下は2つの数値を取得して加算を行うサンプルです。

import java.util.Scanner;
import java.util.InputMismatchException;
 
class Sample {
  public static void main(String args[]) {
    try {
      Scanner scanner = new Scanner(System.in);
      System.out.print("Input > ");

      int x = scanner.nextInt();
      int y = scanner.nextInt();

      System.out.println(x + y);
      scanner.close();
    } catch (InputMismatchException e) { 
      System.out.println("整数を入力してください。");
    }
  }
}

以下はプログラムを実行し「100 200」を入力した結果です。

Input > 100 200
300

nextInt() は next() と同様に空白文字までの文字列を取得します。このプログラムでは x には「100」が、y には「200」が格納され、x + y の結果を表示しています。

今回は、整数の計算を行うので、入力された文字列は Int 型の整数でないと困ります。nextInt() はもし数値でない場合、InputMismatchException の例外を発生させるので、その例外を捕捉することで入力された値が整数かどうかをチェックしています。