Java如何实现用户输入错误时不退出程序并提示重新输入
问题修复方案
核心问题说明
- 原代码无外层重试循环,异常触发后程序直接运行结束就退出
- Scanner调用
nextInt()出现输入类型不匹配异常时,错误的输入内容还残留在输入缓冲区,不清理的话就算加了while循环也会无限触发异常
修正后完整代码
import java.util.Scanner; public class A{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 控制循环的标记:输入成功后退出循环 boolean inputSuccess = false; while (!inputSuccess) { try { System.out.println("请输入两个整数:"); int a = sc.nextInt(); int b = sc.nextInt(); System.out.println("两数之和为:" + (a + b)); // 运行到此处说明输入无异常,修改标记退出循环 inputSuccess = true; } catch (Exception e) { System.out.println("wrong input"); System.out.println("enter again"); // 清空缓冲区残留的错误内容,避免无限触发异常 sc.next(); } } sc.close(); } }
修改点说明
- 新增
inputSuccess布尔值作为while循环的控制条件,输入成功前始终保持重试逻辑 - catch块中新增
sc.next()语句,清空Scanner缓冲区的错误残留内容,解决加循环后无限报错的问题 - 输入正常完成后主动关闭Scanner资源,避免资源泄漏
内容的提问来源于stack exchange,提问作者Sk Hameed
相关产品推荐
相关产品推荐

