ユーザー入力値をスキャンするコードを少し実行しようとしています。このアクションは、私が作成した getTriangleDim(); という名前のカスタム メソッドに含まれています。メソッドはユーザーの int 値を読み取り、それが特定の範囲内にあることを確認してから、入力された int 値を返します。この方法はうまく機能し、問題はありません。
getTriangleDim() メソッドに int 以外の値を入力すると、問題が発生します。InputMismatchException エラーが発生します。この問題を解決するために、do-while ループに try-catch ステートメントを記述しました。しかし、try-catch ステートメントを使用したのはこれが初めてで、何かが足りないようです。
do-while ループ内にネストされた try-catch ステートメントのコードを次に示します。
//loop to scan for triangle dimension
boolean bError = true;
int triangle;
do{
try {
triangle = getTriangleDim();
bError=false;
}
catch (Exception e){
System.out.println("You did not enter an integer, please enter an integer value");
triangle = getTriangleDim();
}
}while (bError);
int の代わりに char 値を入力してテストすると、実際にはエラーが 1 回検出され、"you did not....." ステートメントが出力されます。しかし、int 以外の別の数値を再入力すると、実行時エラーが再び表示されます........あなたはそれを推測しました........ InputMismatchException エラー。
私のメソッドのコードは次のとおりです。
//method for scanning triangle dimensions from keyboard
public static int getTriangleDim(){
int triangle = 0;
Scanner keyboard = new Scanner(System.in);
do{
System.out.print("Enter a non-zero integer length (+/-1 - +/-16): ");
triangle = keyboard.nextInt();
if((!(triangle <= 16 && triangle >= 1))&&(!(triangle >= -16 && triangle <= -1)))
System.out.println("Inpute value outside of range");
}while((!(triangle <= 16 && triangle >= 1))&&(!(triangle >= -16 && triangle <= -1)));
return triangle;
}
続行するには Do-While ループが必要ですが、これらのエラーが発生し続けます。