Я пытаюсь добиться того, чтобы мой оператор if проверял, возвращает ли мой метод verifyAnswer значение true, и если это так, я хочу, чтобы он отменил мой таймер. Итак, я искал, как сделать следующее, но в ответе я нашел все похожие вещи, однако я думаю, что, поскольку мой аргумент в методе зависит от ответа пользователя, он не работает. Это кажется простым, но я новичок в Java и не могу заставить его работать. Спасибо всем за помощь!
public boolean verifyAnswer(String userAnswer) {
String correctAnswer = this.questions.get(currentQuestionIndex).correctAnswerText;
if(userAnswer.equals(correctAnswer)) {
timer.pauseTimer();
JOptionPane.showMessageDialog(null, "Correct Answer");
return true;
}
else {
timer.pauseTimer();
JOptionPane.showMessageDialog(null, "Wrong Answer");
return false;
}
}
Timer t = new Timer();
int[] score = {0};
TimerTask tt = new TimerTask() {
@Override
public void run() {
System.out.println(++score[0]);
if (score[0] == 30) {
t.cancel();
}
else if(verifyAnswer()) { //Why doesn't this line work?
t.cancel();
}
};
};
t.scheduleAtFixedRate(tt, 0, 1000);
Ниже находится метка со слушателем действия, поэтому, когда пользователь нажимает на нее, он проверяет текст, который находится в метке, с помощью метода verifyAnswer, чтобы увидеть, есть ли пользователь выбрал правильно.
label_option_a = new JLabel("<html>Option A</html>");
label_option_a.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
verifyAnswer(label_option_a.getText());
}
});