このコードは、入力ストリームから提供された分母で 24 を除算するときに例外をキャッチすることになっています。0 で除算するとき、ユーザーが「hello」などの単語を入力した場合、またはユーザーが入力する可能性のあるその他の奇妙なことなど、例外をキャッチする必要があります。また、小数を入力した場合、戻り値は整数でなければなりません。例外がキャッチされた場合、プログラムは、有効な整数が入力されるまで、別の整数を入力するようにユーザーに要求する必要があります。
私が抱えている問題は、単語が入力された場合や小数が入力された場合に、プログラムが例外をキャッチしていないことです。私は何を間違っていますか。
public class Division {
public int quotient(int numerator){
boolean flag = false;
Scanner s = new Scanner(System.in);
int denom = 0;
while(flag==false){
denom = Integer.parseInt(s.next());
try{
int q = numerator/denom;
} catch(NumberFormatException nfe){
System.out.print("Enter an integer:");
continue;
} catch(InputMismatchException ime){
System.out.print("Enter an integer:");
continue;
} catch(ArithmeticException ae){
System.out.print("Enter a non-zero integer:");
continue;
}
flag=true;
}
return numerator/denom;
}
public static void main(String[] args) {
System.out.print("Enter an integer (although you can make mistakes): ");
System.out.println("The quotient is " + new Division().quotient(24));
System.out.println("Done!");
}
}