はじめに
Javaプログラムでユーザーからの入力を受け取り、エラーハンドリングを適切に行う方法について説明します。例として、文字列と整数の入力を受け付ける単純なメソッドを作成します。また、エラーが発生した際に繰り返し入力を求めるような挙動を実現します。
コードの実装
以下のコードは、JavaのScannerクラスを使用して文字列と整数の入力を受け取ります。
文字列と整数値の入力を求めるメソッド
import java.util.InputMismatchException;
import java.util.Scanner;
public class InputExample {
public static void main(String[] args) {
// getInputStringメソッドで文字列を代入する
String name = getInputString("名前を入力してください: ");
// getInputIntメソッドでも整数値を代入する
int age = getInputInt("年齢を入力してください: ");
System.out.println("入力された情報:");
System.out.println("名前: " + name);
System.out.println("年齢: " + age);
}
// 文字列の外部入力を求めるメソッド
public static String getInputString(String message) {
// 外部入力のメソッドを使用するためにはAPIのインスタンス化が必要
Scanner scanner = new Scanner(System.in);
System.out.print(message);
// インスタンス化したscannerで文字列を取得する
return scanner.nextLine();
}
// 整数値の外部入力を求めるメソッド
public static int getInputInt(String message) {
// 外部入力のメソッドを使用するためにはAPIのインスタンス化が必要
Scanner scanner = new Scanner(System.in);
// 整数値を代入する変数を初期化
int input = 0;
// ループ処理の判定材料にfalseを代入しておく
boolean isValidInput = false;
// 変数のisValidInputがfalseの場合はループし続ける
while (!isValidInput) {
System.out.print(message);
// 例外処理
try {
// エラーが起こりそうなコードを記述する
input = scanner.nextInt(); // 整数値の外部入力を求める
isValidInput = true; // エラーが発生しなかった場合はtrueでループを止める
} catch (InputMismatchException e) {// エラーが発生した場合の処理を記述する
// InputMismatchException 期待したデータ型を一致しなかった場合にスローされるエラー
// ユーザーが整数以外の文字列を入力した場合など
System.out.println("整数を入力してください。");
scanner.nextLine(); // 改行文字をクリアするために次の行を読み飛ばす。入力エラーを処理するために必要です
}
}
return input;
}
}
まとめ
この記事では、Javaプログラムでユーザーからの入力を受け取り、エラーハンドリングを処理する方法をご説明いたしました。Javaに限らず入力処理はよく使われる手法かと思われますので参考になれば幸いです