Javaでキーボードから入力された文字や数字を読み取るには、ScannerクラスまたはBufferedReaderクラスを使用する。
このページではScannerクラスについて確認していこう。キーボード入力について知りたい方は参考にしていただければと思う。
Javaでのキーボード入力
キーボード入力のサンプルプログラム
Javaでキーボード入力を読み取るにはScannerクラスを使う。使い方は簡単だ。
説明の前に、先にScannerクラスを使用した簡単なサンプルプログラムを確認してみよう。これだけでなんとなくわかってしまう人も多いはずだ。
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クラスを実行して、「あいうえお」と入力して、改行した場合の実行結果は以下のようになる。
何か入力してください。 あいうえお 入力した文字列は あいうえお です。
複数の入力をしたい場合
先ほどのサンプルプログラムのsampleAクラスは1行入力して終了するプログラムだったが、複数行のキーボード入力の読み取り方法を確認しよう。
以下はampleAクラスを少し変更したプログラムだ。
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クラスを実行して、「あいうえお」と入力して改行、「かきくけこ」と入力して改行、そして終了を入力した場合の実行結果は以下のようになる。
何か入力してください。 あいうえお 入力した文字列は あいうえお です。 かきくけこ 入力した文字列は かきくけこ です。 入力終了です。
まとめ
このページではJavaでのキーボード入力についてまとめてきた。Scannerクラスをインポートすればすぐに使用できるのがお分かりいただけたと思う。
インタラクティブなアプリケーションを作るのは楽しいので、キーボード入力も使い方を覚えておこう。



