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

Java猜数字程序:如何让JOptionPane同时接收整数与字符串输入?

Java猜数字程序:支持字符串输入的修改方案

你的原代码直接强制转换输入为整数,一旦用户输入字符串、字母这类非整数内容,程序就会报错崩溃。下面是修改后的完整代码,能处理各种输入情况,包括字符串、取消输入、超出范围的数字:

import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args) {
        while (true) {
            // 先获取原始输入字符串,不直接转换
            String inputStr = JOptionPane.showInputDialog("Enter a number between 1 to 10: ");
            
            // 判断用户是否点击取消按钮
            if (inputStr == null) {
                JOptionPane.showMessageDialog(null, "Goodbye!");
                break;
            }

            int numcor;
            try {
                // 尝试将字符串转换为整数
                numcor = Integer.parseInt(inputStr);
                
                // 判断数字是否在1-10范围内
                if (numcor < 1 || numcor > 10) {
                    JOptionPane.showMessageDialog(null, "Please enter a number between 1 and 10!");
                    continue;
                }

                // 判断是否猜对
                if (numcor == 5) {
                    JOptionPane.showMessageDialog(null, "Correct number!");
                    break;
                } else {
                    JOptionPane.showMessageDialog(null, "Try Again");
                }
            } catch (NumberFormatException e) {
                // 处理非整数输入的情况
                JOptionPane.showMessageDialog(null, "That's not a valid number! Please try again.");
            }
        }
    }
}

关键修改说明

  • 先获取原始输入:不再直接把输入转成整数,先拿到字符串类型的输入,这样能先判断用户是否取消操作(输入为null)
  • try-catch捕获异常:当输入无法转成整数时(比如输入"abc"),Integer.parseInt()会抛出NumberFormatException,用try-catch接住这个异常,给用户提示后继续循环
  • 增加范围校验:补充了数字是否在1-10之间的判断,避免用户输入超出范围的整数
  • 移除无用Scanner:原代码里的Scanner对象根本没用到,直接删除简化代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:22:45