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

Java Swing年龄验证程序如何处理非整数输入的异常?

解决Java Swing年龄验证程序的异常处理问题

你的问题核心是没对Integer.parseInt()的异常做捕获,而且没处理用户点击取消导致的空输入情况。下面是修改后的完整代码,能覆盖所有无效输入场景:

import javax.swing.JOptionPane;

public class AgeValidator {
    public static void main(String[] args) {
        while (true) {
            String input = JOptionPane.showInputDialog("Enter your Age: ");
            
            // 处理用户点击取消或关闭输入框的情况
            if (input == null) {
                JOptionPane.showMessageDialog(null, "输入已取消");
                break;
            }
            
            int age;
            try {
                age = Integer.parseInt(input);
            } catch (NumberFormatException e) {
                JOptionPane.showMessageDialog(null, "请输入有效的整数年龄!");
                continue; // 回到循环开头重新输入
            }
            
            // 年龄范围判断
            if (age >= 75) {
                JOptionPane.showMessageDialog(null, "您年纪不小了!");
                break;
            } else if (age >= 18) {
                JOptionPane.showMessageDialog(null, "您是成年人!");
                break;
            } else if (age > 0) {
                JOptionPane.showMessageDialog(null, "您还不是成年人!");
                break;
            } else {
                JOptionPane.showMessageDialog(null, "无效的年龄!请输入大于0的整数");
            }
        }
    }
}

关键修改点说明:

  1. 捕获NumberFormatException:把Integer.parseInt()放在try块里,一旦输入无法转成整数,就触发catch块,弹出自定义错误提示后继续循环。
  2. 处理空输入:先获取输入字符串,判断是否为null(用户点击取消按钮时会返回null),这种情况直接提示并退出循环。
  3. 优化循环逻辑:用while(true)替代while(1==1),更符合Java编码规范。
  4. 完善错误提示:针对<=0的年龄,给出更明确的提示,引导用户输入有效数值。

覆盖所有无效输入场景:

  • 输入非整数字符(如"w"、"12.3")→ 触发NumberFormatException,提示输入有效整数
  • 输入0或负数 → 提示无效年龄
  • 点击取消或关闭输入框 → 提示输入取消并退出
  • 输入空字符串 → 同样触发NumberFormatException,提示有效整数

内容的提问来源于stack exchange,提问作者Matthew Gligore

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 08:02:45