指定した型の値を読み込む

広告

前の頁ではトークンを順番に文字列として読み取りました。ここでは入力された値を指定した型の値として受け取る方法を見ていきます。

入力の次のトークンを int としてスキャンします。

nextInt() 形式のこの呼び出しは、nextInt(radix) の呼び出しと正確に同じ動作になります。ここ
で、radix はこのスキャナのデフォルト基数です。

戻り値:
  入力からスキャンした int 
例外: 
  InputMismatchException - 次のトークンが Integer 正規表現に一致しないか、範囲外の場合
  NoSuchElementException - スキャンする入力がなくなった場合 
  IllegalStateException - このスキャナがクローズしている場合

まずは「int型」の値を受け取る場合です。当然のことながら入力された値はint型に適合する値でなくてはなりません。int型で無いトークンをこのメソッドで読み込もうとすると例外のInputMismatchExceptionが発生します。

サンプルプログラム

では実際に試してみましょう。

testScanner2.java

import java.util.Scanner;

class testScanner2{
  public static void main(String args[]){
    System.out.println("数値を入力して下さい。");

    Scanner scan = new Scanner(System.in);

    int val = scan.nextInt();
    System.out.println("最初の数値のトークンは: "+ val); 

    val = scan.nextInt();
    System.out.println("次の数値のトークンは  : "+ val);
  }
}

上記を実際にコンパイルして実行してみると下記のようになります。

p7

上記のようにキーボードからの入力待ちとなります。ここで「10 25」と入力してからリータンキーを押すと下記のようになります。

p8

数値以外の値を入力した場合も試してみます。

p9

上記のように「Exception in thread "main" java.util.InputMismatchException」が発生します。例外を考慮に入れる場合は下記のように変更して下さい。

testScanner3.java

import java.util.Scanner;
import java.util.InputMismatchException;

class testScanner3{
  public static void main(String args[]){
    System.out.println("数値を入力して下さい。");

    Scanner scan = new Scanner(System.in);

    try{
      int val = scan.nextInt();
      System.out.println("最初の数値のトークンは: "+ val); 

      val = scan.nextInt();
      System.out.println("次の数値のトークンは  : "+ val);
    }catch (InputMismatchException e){
      System.out.println("型が違います:" + e);
    }
  }
}

先ほどと同じように数値以外の値を入れた場合は下記のようになります。

p10

他の型のメソッド

先ほどは例としてint型の値を受け取るメソッドを使いましたが、他の型用にも同じようなメソッドが用意されています。基本的に使い方は同じなのでメソッドの紹介だけしておきます(例外の説明は同じなので省いています)。

nextByte:

入力の次のトークンを byte としてスキャンします。

戻り値:
  入力からスキャンした byte

nextShort:

入力の次のトークンを short としてスキャンします。

戻り値:
  入力からスキャンした short

nextLong:

入力の次のトークンを long としてスキャンします。

戻り値:
  入力からスキャンした long

nextFloat:

入力の次のトークンを float としてスキャンします。

戻り値:
  入力からスキャンした float

nextDouble:

入力の次のトークンを double としてスキャンします。

戻り値:
  入力からスキャンした double

nextBoolean:

入力の次のトークンをブール値としてスキャンして、その値を返します。

戻り値:
  入力からスキャンしたブール値

( Written by Tatsuo Ikura )