- Home ›
- Java入門 ›
- Scannerクラス ›
- HERE
指定した型の値を読み込む
前の頁ではトークンを順番に文字列として読み取りました。ここでは入力された値を指定した型の値として受け取る方法を見ていきます。
nextInt public int nextInt()
入力の次のトークンを int としてスキャンします。 nextInt() 形式のこの呼び出しは、nextInt(radix) の呼び出しと正確に同じ動作になります。ここ で、radix はこのスキャナのデフォルト基数です。 戻り値: 入力からスキャンした int 例外: InputMismatchException - 次のトークンが Integer 正規表現に一致しないか、範囲外の場合 NoSuchElementException - スキャンする入力がなくなった場合 IllegalStateException - このスキャナがクローズしている場合
まずは「int型」の値を受け取る場合です。当然のことながら入力された値はint型に適合する値でなくてはなりません。int型で無いトークンをこのメソッドで読み込もうとすると例外のInputMismatchExceptionが発生します。
サンプルプログラム
では実際に試してみましょう。
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); } }
上記を実際にコンパイルして実行してみると下記のようになります。
上記のようにキーボードからの入力待ちとなります。ここで「10 25」と入力してからリータンキーを押すと下記のようになります。
数値以外の値を入力した場合も試してみます。
上記のように「Exception in thread "main" java.util.InputMismatchException」が発生します。例外を考慮に入れる場合は下記のように変更して下さい。
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); } } }
先ほどと同じように数値以外の値を入れた場合は下記のようになります。
他の型のメソッド
先ほどは例としてint型の値を受け取るメソッドを使いましたが、他の型用にも同じようなメソッドが用意されています。基本的に使い方は同じなのでメソッドの紹介だけしておきます(例外の説明は同じなので省いています)。
nextByte:
nextByte public byte nextByte()
入力の次のトークンを byte としてスキャンします。 戻り値: 入力からスキャンした byte
nextShort:
nextShort public short nextShort()
入力の次のトークンを short としてスキャンします。 戻り値: 入力からスキャンした short
nextLong:
nextLong public long nextLong()
入力の次のトークンを long としてスキャンします。 戻り値: 入力からスキャンした long
nextFloat:
nextFloat public float nextFloat()
入力の次のトークンを float としてスキャンします。 戻り値: 入力からスキャンした float
nextDouble:
nextDouble public double nextDouble()
入力の次のトークンを double としてスキャンします。 戻り値: 入力からスキャンした double
nextBoolean:
nextBoolean public boolean nextBoolean()
入力の次のトークンをブール値としてスキャンして、その値を返します。 戻り値: 入力からスキャンしたブール値
( Written by Tatsuo Ikura )