【发布时间】:2020-08-02 06:08:32
【问题描述】:
我想要实现的是我希望我的 if 语句检查我的方法 verifyAnswer 是否返回 true,如果它返回 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());
}
});
【问题讨论】:
-
您的
verifyAnswer方法有一个字符串参数,但您没有向它传递任何参数。你认为userAnswer的值是多少,为什么? -
我的 verifyAnswer 方法检查用户是否在四个错误问题之间回答正确,因此如果用户回答正确,它应该返回 true,反之亦然。
-
但这并不能真正回答我的问题——您希望用户的回答来自哪里?它是一个方法参数,当您尝试调用该方法时并没有传入它。
-
对不起,我对此有点陌生,所以我不太明白,当您说“我希望用户回答来自哪里”时,您的确切意思是什么?我不确定我应该传递什么参数才能使它起作用。
-
您应该传入“用户答案” - 目前,我们不知道它来自哪里。您还没有向用户展示任何地方提供答案。例如,我们不知道某处是否存在包含该信息的字段。您希望用户如何提供答案?您希望这些信息如何通过该计划?
标签: java if-statement compiler-errors boolean