私は例外に頭を悩ませようとしていますが、私が直面している問題は、9 から 99 の数字をユーザーに入力させるプログラムを作成する必要があるということです。この番号は、3 つの異なる例外を使用してエラー チェックする必要があります。
e1: 数値が範囲外 (200)
e2: 数値が整数 (double) 以外のデータ型です
e3: 入力が数値以外の別のデータ型 (char)
3 つすべてが機能するように if 構造にパターンを作成しようとしましたが、e2 と e3 を区別することができません。デフォルトは常に e2 です。これは 2 つの例外を除いて私が持っているものですが、3 番目の実装方法を理解するのを助けていただければ幸いです。ありがとうございました。
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
boolean tryAgain = true;
do {
try {
System.out.println("Please enter an integer between 9 and 99: ");
int inInt = input.nextInt();
if (inInt >= 9 && inInt <= 99){
System.out.println("Thank you. Initialization completed.");
tryAgain = false;
}
else if (inInt < 9 || inInt > 99){
throw new NumberFormatException("Integer is out of range.");
}
}
catch (NumberFormatException e1) { // Range check
System.out.println("* The number you entered is not between 9 and 99. Try again.");
System.out.println();
input.nextLine();
}
catch (InputMismatchException e2) { // Something other than a number
System.out.println("* You did not enter an integer. Try again.");
System.out.println();
input.nextLine();
}
} while(tryAgain);
}
}
これが私が今得た出力です:
9 ~ 99 の整数を入力してください: 2
- 入力した数字は 9 から 99 の間ではありません。もう一度やり直してください。
9 ~ 99 の整数を入力してください: f
- 整数が入力されていません。再試行。
9 ~ 99 の整数を入力してください: 88
ありがとうございました。初期化が完了しました。