Java程序如何实现异常捕获后自动循环请求用户输入合法值
解决方案
核心修改点
- 新增无限循环包裹原有输入、计算逻辑,正常计算完成后调用
break即可跳出循环终止程序 - 捕获输入不匹配异常后必须调用
sc.next()清空Scanner缓冲区的错误输入,否则程序会重复读取同一段错误内容,陷入死循环 - 将Scanner的关闭逻辑移到循环外部,避免异常触发时提前关闭输入流,导致后续重试时无法读取用户输入
- 可拆分不同异常的捕获分支,给出更精准的错误提示,提升使用体验
修改后完整代码
import java.util.InputMismatchException; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 无限循环包裹业务逻辑,异常后自动重试 while (true) { try { System.out.println("请输入被除数(整数):"); int x = sc.nextInt(); System.out.println("请输入除数(整数):"); int y = sc.nextInt(); int z = x / y; System.out.println("计算结果为:" + z); // 计算正常完成,跳出循环 break; } catch (InputMismatchException e) { System.out.println("输入错误,请输入有效的整数"); // 清空缓冲区错误输入 sc.next(); } catch (ArithmeticException e) { System.out.println("运算错误,除数不能为0,请重新输入"); } } // 所有逻辑执行完成后再关闭输入流 sc.close(); } }
效果说明
修改后程序无论触发输入格式错误、除零运算错误,都会在提示后自动回到初始输入步骤,只有输入合法参数得到正确结果后才会正常退出。
内容的提问来源于stack exchange,提问作者Arul Dilip
相关产品推荐
相关产品推荐

