package com.personalproject.model; import java.util.List; /** * 表示一个带有多项选择的测验题目. */ public final class QuizQuestion { private final String questionText; private final List options; private final int correctAnswerIndex; /** * 创建新的测验题目. * * @param questionText 题目文本 * @param options 答案选项列表 * @param correctAnswerIndex 正确答案在选项列表中的索引 */ public QuizQuestion(String questionText, List options, int correctAnswerIndex) { if (questionText == null || questionText.trim().isEmpty()) { throw new IllegalArgumentException("Question text cannot be null or empty"); } if (options == null || options.size() < 2) { throw new IllegalArgumentException("Options must contain at least 2 choices"); } if (correctAnswerIndex < 0 || correctAnswerIndex >= options.size()) { throw new IllegalArgumentException("Correct answer index out of bounds"); } this.questionText = questionText; this.options = List.copyOf(options); // 不可变副本 this.correctAnswerIndex = correctAnswerIndex; } /** * 获取题目文本. * * @return 题目文本 */ public String getQuestionText() { return questionText; } /** * 获取答案选项列表. * * @return 不可修改的答案选项列表 */ public List getOptions() { return options; } /** * 获取正确答案在选项列表中的索引. * * @return 正确答案的索引 */ public int getCorrectAnswerIndex() { return correctAnswerIndex; } /** * 检查给定的答案索引是否正确. * * @param answerIndex 用户答案的索引 * @return 若答案正确则返回 true,否则返回 false */ public boolean isAnswerCorrect(int answerIndex) { return answerIndex == correctAnswerIndex; } }