You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 02:30:03