开发选择题批改程序:如何通过习题名称调用存储的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
相关产品推荐
相关产品推荐

