import java.util.Scanner;
import java.util.InputMismatchException;
public class Main
{
public static int quotient(int a, int b) throws ArithmeticException
{
return a / b;
}
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
boolean continueLoop = true;
do
{
try
{
System.out.print("Enter integer numerator: ");
int numerator = scan.nextInt();
System.out.print("Enter integer denomiantor: ");
int denominator = scan.nextInt();
int result = quotient(numerator, denominator);
System.out.println("Result: " + numerator + " / " + denominator
+ " = " + result);
continueLoop = false;
}
catch (InputMismatchException inputMismatchException)
{
System.err.println("\nException: " + inputMismatchException);
scan.nextLine();
System.out.println("\nSolution: Must enter an integer");
}
catch (ArithmeticException arithmeticException)
{
System.err.println("\nException" + arithmeticException);
System.out.println("Solution: Zero is an invalid denominator");
}
} while (continueLoop);
}
}
输出:
Enter integer numerator: 5
Enter integer denomiantor: 0
Solution: Zero is an invalid denominator
Enter integer numerator:
Exceptionjava.lang.ArithmeticException: / by zero
我很困惑为什么最后会显示System.err.println
消息?如果我遗漏scan.nextLine();
?
答案 0 :(得分:2)
一次一个:
我很困惑为什么最后会显示System.err.println消息?
输出流直接进入您的控制台。 错误流在执行期间缓冲,并在程序终止时刷新。因此它最终出现了。
如果我省略scan.nextLine();?
,为什么还会出现无限循环
如果你没有“扫描”前一行,总是找到无效的整数,总是抛出异常,永远不会到continueLoop
变为false
的位置。