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
相关产品推荐
相关产品推荐

