Javaでシステム開発を行う際、ユーザーからのキーボード入力により処理内容を決定したいことも要件として少なくありません。
本記事では、Javaでキーボードからの入力を読み取る方法について、サンプルコードを記載しながらご紹介していきます。
Javaではキーボードからの入力をScannerクラスで読み取る
Javaではキーボードからの入力を読み取る際、Scannerクラスを利用することが可能です。
Scannerクラスとは
Scannerクラスは「java.util」パッケージより提供されている標準入力を取得するためのクラスです。
対話型のプログラムを実装したい際などに利用出来ます。
利用する際には「import java.util.Scanner;」で読み込みを行う必要があります。
Scannerクラスの使い方
Scannerクラスの使い方は、下記サンプルのように記述します。
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("好きな文字を入力してください。"); String str = scan.next(); System.out.println("入力された文字は" + str + "です。"); } }
実行した結果が下記です。
好きな文字を入力してください。 テスト 入力された文字はテストです。
解説
1行目は「java.util」パッケージの読み込みで、この記述がないとScannerクラスを利用することは出来ません。
6行目がScannerクラスのインスタンスを生成している部分で、引数には入力ストリームを指定しますが、今回のように標準入力を指定する場合には「System.in」と記述します。
8行目のnextメソッドが入力情報を受取る部分です。
8行目で一旦プログラムが停止し、キーボードからの入力を受け付けた後、処理が再開する流れとなります。
Javaの型を指定してキーボード入力を受け取る
先ほどご紹介したScannerクラスのnextメソッドでは、キーボードからの入力を文字列として受け取ります。
他にもScannerクラスにはいくつかのメソッドが用意されているので、一覧で確認した後、サンプルコードを確認していきましょう。
Scannerクラスの取り出し用メソッド
Scannerクラスのメソッドには下記のようなメソッドが用意されています。
- next: String型
- nextInt: int型
- nextShort: short型
- nextLong: long型
- nextFloat: float型
- nextDouble: double型
- nextByte: byte型
- nextBoolean: boolean型
nextInt
nextIntは入力情報を数値として受け取るメソッドです。
サンプルコードで確認してみましょう。
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("好きな数字を入力してください。"); int num = scan.nextInt(); System.out.println("入力された数字は" + num + "です。"); } }
実行結果は下記です。
好きな数字を入力してください。 123 入力された数字は123です。
ちなみにint型に対応していない値を入力すると下記のようにエラーとなります。
好きな数字を入力してください。 あいうえお Exception in thread "main" java.util.InputMismatchException
nextBoolean
nextBooleanは「true」または「false」で受け取るメソッドです。
こちらもサンプルコードで確認してみましょう。
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("好きな値を入力してください。"); Boolean bool = scan.nextBoolean(); System.out.println("入力された値は" + bool + "です。"); } }
実行結果は下記です。
好きな値を入力してください。 true 入力された値はtrueです。
Scannerクラスのチェック用メソッド
Scannerクラスでは、キーボードからの入力をチェックするようのメソッドも用意されています。
- hasNextInt: int型のチェック
- hasNextShort: short型のチェック
- hasNextLong: long型のチェック
- hasNextFloat: float型のチェック
- hasNextDouble: double型のチェック
- hasNextByte: byte型のチェック
- hasNextBoolean: boolean型のチェック
hasNextInt
hesNextIntでは、値がint型として解釈可能な場合に「true」を返します。
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("数字を入力してください。"); if(scan.hasNextInt()) { int num = scan.nextInt(); System.out.println("入力された数字は" + num + "です。"); } else { System.out.println("int型に解釈出来ない値が入力されました。"); } } }
実行した結果が下記です。
数字を入力してください。 12.5 int型に解釈出来ない値が入力されました。
hasNextBoolean
同じくBoolean型をチェックする「hasNextBoolean」をサンプルで確認してみます。
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("tureまたはfalseを入力してください。"); if(scan.hasNextBoolean()) { Boolean bool = scan.nextBoolean(); System.out.println("入力された値は" + bool + "です。"); } else { System.out.println("Boolean型に解釈出来ない値が入力されました。"); } } }
実行した結果が下記です。
tureまたはfalseを入力してください。 あいうえお Boolean型に解釈出来ない値が入力されました。
さいごに: キーボード入力を使って対話型のJavaプログラムを作成しよう
本記事では、Javaでキーボードからの入力を読み取る「Scanner」クラスの使い方についてご紹介してきました。
キーボードからの読み取りをプログラムとして組み込むことで、対話型のプログラムが作成可能です。
ユーザーからの入力情報を受け取りたいケースというのは少なくありませんので、ぜひScannerクラスの使い方を理解してご自身で開発するプログラムに組み込んでみてください。
java.utilは標準パッケージですので、Javaがインストールされていれば別途ライブラリ等を導入する必要はありません。