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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:36:04