当输入的n不为数字时,比如a,会出现如图所示的无限循环
原因: 当输入的为a时,会catch InputMismatchException输入不匹配异常
输入为a,sc的值与n的类型不匹配不能赋值给n,执行输入不匹配异常,a仍存在在sc空间中,当进行下次循环时,仍然会报输入匹配异常
解决办法:在catch (InputMismatchException e){}里new一个sc对象
public class 异常体系 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
try {
System.out.println("请输入被除数n:");
int n = sc.nextInt();
System.out.println(5/n);
break;
} catch (ArithmeticException e) {
System.out.println("不能除0");
}catch (InputMismatchException e) {
System.out.println("只能输入数字,不能输入字符:");
}
}
}
}
运行结果: