Когда вы читаете из базы данных, вы добавляете результат в список и перебираете этот список (для каждого добавления). Итак, сначала вы читаете выбор 1, l oop над списком (содержащий 1j, затем вы добавляете 2, l oop над списком, содержащим 1 и 2, затем вы добавляете 3, и l oop над списком, содержащим 1 , 2 и 3. Таким образом, вариант 1 будет оцениваться 3 раза, 2 2 раза и 3 раза. Всего 6 баллов.
Однако есть еще одна проблема.
Вы сравниваете каждый вариант со всеми ответами. Это означает, что оценка будет увеличиваться, если она соответствует нескольким ответам.
Скажем, у меня есть ответы a, b, b, и я выбираю b, a, a. В вашем выборе l oop 1 получит 2 балла (соответствует ответу 2 и 3), а вариант 2 и 3 - по одному баллу каждый (соответствует ответу 1).
Вы должны сравнивать выбор только с ответом на этот вопрос. поместите ответы в список вместо отдельных переменных.
Поскольку ваш код не показывает, как answer
answer1
answer2
возможно одно общее руководство:
// Collect all answers
ResultSet rs = stmt.executeQuery("Select * from Questions");
while (rs.next()) {
Question x = new Question(rs.getInt("ExamCode"), rs.getString("Category"),
rs.getString("Question"), rs.getString("ChoiceA"), rs.getString("ChoiceB"),
rs.getString("ChoiceC"), rs.getString("ChoiceD"), rs.getString("Answer"));
list.add(x);
}
// Not sure how you collect answers...
List<String> answers = new ArrayList<>();
// Collect answers ...
answers.add("answer 1");
answers.add("answer 2");
answers.add("answer 3");
for (int i = 0; i < list.size(); i++) {
correct = list.get(i).getAnswer();
if (correct.equalsIgnoreCase(answers.get(i))) {
score++;
System.out.print(score);
}
}
// Show result
new Result(score, list).setVisible(true);
this.dispose();
}