Java如何实现循环读取整数输入直至无NumberFormatException异常
整数输入重试功能实现方法
核心逻辑
不需要在异常捕获块里手动实现流程跳转,只需要把输入读取、格式校验的整个try-catch块放到持续运行的循环结构中,当捕获到格式异常、打印错误提示后,循环会自动回到输入读取环节重新等待用户输入,直到解析整数成功后再跳出循环即可。
可直接参考的代码实现
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num; // 循环持续运行直到拿到合法输入 while (true) { try { System.out.println("请输入整数:"); num = Integer.parseInt(br.readLine()); // 解析无异常触发,跳出循环,结束输入流程 break; } catch (NumberFormatException e) { System.out.println(e); System.out.println("输入不是合法整数,请重新输入"); } catch (IOException e) { System.out.println("输入读取失败,请重新输入"); } } // 循环结束后即可使用num变量执行后续业务逻辑 System.out.println("成功读取的整数为:" + num);
常见注意事项
- 不能把try-catch结构放在循环外部,否则捕获一次异常后流程就会跳出输入环节,无法实现重试
- 不需要在catch块里写额外的跳回逻辑,只要try块的代码在循环体内,catch块执行完毕后循环会自动从头开始执行,回到输入读取步骤
- 不要遗漏处理
br.readLine()本身可能抛出的IO异常,避免程序意外崩溃
内容的提问来源于stack exchange,提问作者Tom Vempala
相关产品推荐
相关产品推荐

