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

如何限制Java JOptionPane问答程序的用户输入仅为A/B/C/D选项

实现逻辑与修改后代码

你现有代码存在两个需要修正的点:

  • Java 中字符串内容对比不能用==,该运算符对比的是字符串对象的内存地址,要判断内容是否一致需要使用equals()方法,建议额外增加忽略大小写的处理,兼容用户输入小写选项的场景
  • 缺少输入合法性校验逻辑,需要先判断输入是否符合要求,不符合直接弹出警告,不进入判分流程
  • 额外注意:你原有代码中的正确答案设置错误,希特勒出生地为奥地利,对应选项B,原有代码判断输入等于D加分的逻辑是错误的

修改后的完整代码如下:

import javax.swing.JOptionPane;

public class QuizQuestion {
    public static void main(String[] args) {
        int points = 0;
        String question = "阿道夫·希特勒的出生地是哪里?"
                + "\nA) 美国"
                + "\nB) 奥地利"
                + "\nC) 德国"
                + "\nD) 西班牙";

        String answer = JOptionPane.showInputDialog(question);
        // 输入合法性校验
        if (answer == null || !answer.trim().matches("[ABCDabcd]")) {
            JOptionPane.showMessageDialog(null, "输入无效,请仅输入A、B、C、D四个选项", "输入错误", JOptionPane.WARNING_MESSAGE);
        } else {
            // 去除前后空格、转大写后对比答案,兼容用户输入空格、小写的场景
            if (answer.trim().toUpperCase().equals("B")) {
                points++;
                JOptionPane.showMessageDialog(null, "回答正确!当前积分:" + points);
            } else {
                JOptionPane.showMessageDialog(null, "回答错误");
            }
        }
    }
}

逻辑说明

  • 校验逻辑先处理用户点击取消返回空值的边界情况,再判断输入内容去除前后空格后是否仅为A/B/C/D/a/b/c/d中的单个字符,不符合要求直接弹出警告框
  • 合法输入统一格式化后再对比答案,避免用户误输入空格、小写字母导致的判分错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:30:04