java异常处理,用scanner输入数据,出错后抛出异常并要求再次输入,但运行时输入错误数据类型后。。。

2024-11-15 18:37:43
推荐回答(2个)
回答1:

nextInt方法在发生异常后,不再接受用户输入的任何数据,而是徘徊在异常区域,如果外部使用死循环,从而导致死循环发生。

改用nextLine搭配NumberFormatException即可。



Scanner keyboard = new Scanner(System. in );
for (;;) {
    System.out.println("输入1个整数: ");
    try {
        userAnswer = Integer.parseInt(keyboard.nextLine().trim());
        break;
    } catch (NumberFormatException nfe) {
        System.out.print("输入数据类型错误!你必须输入数值数据!\n");
        continue;
    }
}
keyboard.close();

回答2:

写一个方法,进行递归调用,keyboard.close();这一句删掉, catch代码块里面就是写递归调用的方法,用 方法名();这个方式调用