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的整数"); } } } }
关键修改点说明:
- 捕获NumberFormatException:把
Integer.parseInt()放在try块里,一旦输入无法转成整数,就触发catch块,弹出自定义错误提示后继续循环。 - 处理空输入:先获取输入字符串,判断是否为null(用户点击取消按钮时会返回null),这种情况直接提示并退出循环。
- 优化循环逻辑:用
while(true)替代while(1==1),更符合Java编码规范。 - 完善错误提示:针对<=0的年龄,给出更明确的提示,引导用户输入有效数值。
覆盖所有无效输入场景:
- 输入非整数字符(如"w"、"12.3")→ 触发NumberFormatException,提示输入有效整数
- 输入0或负数 → 提示无效年龄
- 点击取消或关闭输入框 → 提示输入取消并退出
- 输入空字符串 → 同样触发NumberFormatException,提示有效整数
内容的提问来源于stack exchange,提问作者Matthew Gligore
相关产品推荐
相关产品推荐

