今回はScannerクラスについて扱います。
第10回でも少し紹介しましたが、今回はもう少し細かく触れてみたいと思います。
前回コマンドライン引数を使えば実行時プログラムに値を渡すことができる、ということを説明しました。
しかし、コマンドライン引数ではStrign型でしか値を扱うことができません。
すると、入力した数値を計算したりできません。
そこで使うのがScannerクラスです!
Scannerクラスを使えば値のデータ型まで決めることができます!
では早速サンプルをみてみましょう。
■サンプルプログラム
import java.util.Scanner; class ScnSample { public static void main(String[] args) { Scanner scn = new Scanner(System.in); System.out.println("入力された2つの値の合計を求めます。"); System.out.print("x : "); int x = scn.nextInt(); System.out.print("y : "); int y = scn.nextInt(); int sum = x + y; System.out.println("x + y → " + sum); } }
■実行結果
第17回Scanner1
ここで数値を入力しエンターキーを押します。
yの場合も同様です。
第17回Scanner2
するとxとyの合計が表示されます。
■解説
1行目
Scannerクラスはutilパッケージに含まれているのでインポート文が必要になります。
5行目
Scannerクラスをインスタンス化しています。
コンストラクタの引数に「System.in」と指定するとキーボードから値を読み取ることができます。
読み取るにはnextInt()メソッドを使っています。
これにより読み取った値をint型として扱うことができます。
■nextXXXメソッド
ScannerクラスにはnextInt()メソッドのように、指定したデータ型として読み取るためのメソッドがいくつか用意されています。
・boolean nextBoolean()
・byte nextByte()
・double nextDouble()
・float nextFloat()
・int nextInt()
・long nextLong()
・short nextShort()
・String next()
Stringとして読み取る場合はnext()メソッドとなりますので注意してください。
そしてnextChar()がないことにも注意が必要です。
もしchar型として読み取りたいのであれば、Stringとして読み取って、その先頭1文字をchar型として取り出すことができます。
■まとめ
今回はScannerクラスを用いてプログラム実行の際に値を渡す方法をご紹介しました。
前回のコマンドライン引数はString型としてしか値を渡すことができないため、計算ができませんでした。
しかし、今回紹介したScannerクラスを用いれば、データ型を指定した上で値を渡すことができるようになるのです!