Javaでキーボードから入力された文字や数字を読み取るには、ScannerクラスまたはBufferedReaderクラスを使用する。
このページではScannerクラスについて確認していこう。キーボード入力について知りたい方は参考にしていただければと思う。
Javaでのキーボード入力
キーボード入力のサンプルプログラム
Javaでキーボード入力を読み取るにはScannerクラスを使う。使い方は簡単だ。
説明の前に、先にScannerクラスを使用した簡単なサンプルプログラムを確認してみよう。これだけでなんとなくわかってしまう人も多いはずだ。
1 2 3 4 5 6 7 8 9 |
import java.util.Scanner; //・・・① class sampleA { public static void main(String args[]) { Scanner scanner = new Scanner(System.in); //・・・② System.out.println("何か入力してください。"); String string = scanner.next(); //・・・③ System.out.println("入力した文字列は " + string + " です。"); } } |
まず、Scannerクラスを使用するには、 Scannerクラスを使用することをimport構文でファイルの先頭に書く必要があるので、①で以下のように書く。
import java.util.Scanner;
Scannerクラスを使用するための変数「scanner」を初期化して、Scannerクラスを使う準備を整えるのが②の1文だ。初期化するときの引数に「System.in」と書いているが、これはキーボードからの入力を使うことを指定している。
Scanner scanner = new Scanner(System.in);
③はScannerクラスの「next」メソッドを使っている。nextクラスはキーボードから改行されるまでの文字を取得してくれる。nextメソッドで取得したキーボードから入力された文字をString型の変数に格納しているのが以下だ。
String string = scanner.next();
sampleAクラスを実行して、「あいうえお」と入力して、改行した場合の実行結果は以下のようになる。
1 2 3 |
何か入力してください。 あいうえお 入力した文字列は あいうえお です。 |
複数の入力をしたい場合
先ほどのサンプルプログラムのsampleAクラスは1行入力して終了するプログラムだったが、複数行のキーボード入力の読み取り方法を確認しよう。
以下はampleAクラスを少し変更したプログラムだ。
1 2 3 4 5 6 7 8 9 10 11 12 |
import java.util.Scanner; class sampleB { public static void main(String args[]) { Scanner scanner = new Scanner(System.in); System.out.println("何か入力してください。"); while(scanner.hasNext()){ //・・・① String string = scanner.next(); //・・・② System.out.println("入力した文字列は " + string + " です。"); //・・・③ } System.out.println("入力終了です。"); } } |
①のwhile文のループの終了条件に、Scannerクラスの「hasNext」メソッドを使っている。hasNextメソッドは入力の終わりを検出してくれるメソッドだ。つまり、①は入力の終了を検知するまでループして、②のnextメソッドでキーボードの入力を読み取り、③で出力する処理だ。ちなみに入力の終了は、Windowsのコマンドプロンプトの場合は「Ctl+Z」、Macの場合は「Ctl+D」を入力する。
while(scanner.hasNext())
sampleBクラスを実行して、「あいうえお」と入力して改行、「かきくけこ」と入力して改行、そして終了を入力した場合の実行結果は以下のようになる。
1 2 3 4 5 6 |
何か入力してください。 あいうえお 入力した文字列は あいうえお です。 かきくけこ 入力した文字列は かきくけこ です。 入力終了です。 |
まとめ
このページではJavaでのキーボード入力についてまとめてきた。Scannerクラスをインポートすればすぐに使用できるのがお分かりいただけたと思う。
インタラクティブなアプリケーションを作るのは楽しいので、キーボード入力も使い方を覚えておこう。