Java: 选择题游戏使用哪种结构

Java: Which structure to use for a multiple choice game

我正在尝试创建一个多项选择游戏,每个问题有 4 个可能的答案。
在游戏的主要部分,玩家将被问到一个问题并被提示输入答案。
在我的代码中,连同 questionanswer 字符串,我将不知何故需要能够判断哪个是正确答案,甚至可能标记这个问题,以免在以后的回合中重复。此外,可能的答案需要在 "playthroughs" 之间按 randomized/different 顺序排列。

我正在尝试弄清楚使用什么数据结构来存储以上所有内容,以便能够适当地编写代码。

我的第一个选择是有一个主 Hashmap<String, HashMap> 和第二个 HashMap<String, Boolean>* 存储在第一个中。第一个映射将问题字符串存储为键,第二个 HashMap(s) 作为值。第二个 HashMap 将答案存储为键和每个键的布尔值,指示哪个是正确答案,作为值。
有点复杂,但至少在理论上它似乎有效,虽然我仍然没有办法将问题标记为 "already asked"。

我的第二个选择是一个二维数组,其行代表一个问题,0 列是 问题 字符串,1、2、3、4 列存储answer 个字符串,第 5 列存储正确答案字符串,并且可能有第 7 列 (6) 存储一个标志,标记该问题是否还没有被问过。
虽然理论上更简单,但我担心这种方法在实际编码时会非常混乱。

如果有 better/easier 方法可以做到这一点,请告诉我,甚至可以详细说明它们的好处。

Java 是一种面向对象的语言。你应该使用它。

示例:创建一个 class 代表一个问题和可能的答案。

public class Question {
    private String       question;
    private String       correctAnswer;
    private List<String> answerList;
}

现在,您可以创建一个很好用的构造函数,首先给出问题,然后使用 varargs 给出所有答案,首先给出正确答案:

new Question("How satisfied are you with this answer?",
             "Extremely satisfied",
             "Very satisfied",
             "Somewhat satisfied",
             "Not so satisfied");

您的构造函数然后可以构建 answers 列表并调用 Collections.shuffle(this.answers) 来随机化它们。

然后您将所有问题添加到 List<Question> 并调用 shuffle,这样问题将以随机顺序提出,并且只会提出一次。

由于这都是理论上的,您应该考虑使用对象。

提出问题class。让它存储您的问题字符串和答案字符串。

您可以根据需要存储任意数量的问题字符串,比如在一个数组中。答案可能只是一个代表正确答案索引的整数。

就 Hashmap 而言,如果您想为每个问题存储唯一的 ID 值并查找它们,您可以使用它们,但这并不是必需的。

您可以将这些 Question 对象存储在 Arraylist 中,添加自由洗牌并迭代它们