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

开发选择题批改程序:如何通过习题名称调用存储的String数组?

嘿,这个问题其实挺典型的——核心就是要把用户输入的习题名称和对应的答案数组做个绑定映射,我给你几个实用的方案,你可以根据自己的开发场景选:

方案1:用哈希映射(最灵活通用)

这是最常用的方式,不管你用Java、Python还是其他语言,都有类似的哈希表/字典结构来帮你实现“字符串→数组”的映射。

以Java为例:

// 先定义好所有习题的答案数组
String[] mathQuizAnswers = {"A", "B", "C", "A"};
String[] englishQuizAnswers = {"D", "A", "B", "B"};

// 建立映射关系:习题名称对应到答案数组
HashMap<String, String[]> quizAnswerMap = new HashMap<>();
quizAnswerMap.put("数学作业", mathQuizAnswers);
quizAnswerMap.put("英语作业", englishQuizAnswers);

// 用户输入后调取数组的逻辑
String userInputQuizName = "数学作业"; // 这里替换成用户实际输入的内容
String[] targetAnswers = quizAnswerMap.get(userInputQuizName);

if (targetAnswers != null) {
    // 这里直接用你已经写好的比对逻辑就行
    System.out.println("找到对应习题答案,开始批改...");
} else {
    // 别忘了处理用户输入不存在的情况,避免报错
    System.out.println("抱歉,找不到这个习题的答案哦");
}

这个方案的好处是灵活性拉满,后续要新增习题的话,直接往映射里加新的键值对就行,不需要改核心逻辑,非常适合需要频繁更新习题列表的场景。

方案2:用枚举(适合固定习题列表)

如果你的班级习题是固定的,不会经常新增,那用枚举会更安全——可以避免因为拼写错误导致找不到数组的问题,而且编译时就能检查出问题。

还是Java的例子:

// 定义枚举,把习题名称和答案数组绑定在一起
enum ClassQuiz {
    MATH("数学作业", new String[]{"A", "B", "C", "A"}),
    ENGLISH("英语作业", new String[]{"D", "A", "B", "B"});

    private final String quizName;
    private final String[] answers;

    // 枚举构造方法
    ClassQuiz(String quizName, String[] answers) {
        this.quizName = quizName;
        this.answers = answers;
    }

    // 根据用户输入的名称找到对应的枚举实例
    public static ClassQuiz getQuizByName(String name) {
        for (ClassQuiz quiz : values()) {
            if (quiz.quizName.equals(name)) {
                return quiz;
            }
        }
        return null;
    }

    // 获取答案数组的方法
    public String[] getAnswers() {
        return answers;
    }
}

// 使用的时候
String userInput = "英语作业";
ClassQuiz targetQuiz = ClassQuiz.getQuizByName(userInput);

if (targetQuiz != null) {
    String[] targetAnswers = targetQuiz.getAnswers();
    // 执行你的比对逻辑
} else {
    System.out.println("未找到该习题");
}

这种方式的优势是类型安全,不会出现映射里存错键的情况,适合习题列表长期稳定的场景。

补充:如果是Python的实现思路

如果你用Python开发的话,字典就是最直接的选择,代码更简洁:

# 定义答案数组
math_answers = ["A", "B", "C", "A"]
english_answers = ["D", "A", "B", "B"]

# 建立映射字典
quiz_map = {
    "数学作业": math_answers,
    "英语作业": english_answers
}

# 获取用户输入并调取数组
user_input = input("请输入习题名称:")
target_answers = quiz_map.get(user_input)

if target_answers:
    print("开始批改作业...")
    # 这里执行你的比对逻辑
else:
    print("找不到对应的习题,请检查输入!")

不管选哪种方案,核心都是先建立“名称→数组”的关联,然后通过用户输入的名称去查找对应的数组就行,你的比对逻辑完全可以直接复用~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:27:46