Java 为什么可以';我不能在if语句中检查一个方法是否返回true吗?
我试图实现的是,我希望if语句检查我的方法verifyAnswer是否返回true,如果返回true,我希望它取消计时器。因此,我搜索了如何执行以下操作,但我发现的答案都说了类似的事情,但是我认为,由于我在方法中的论点取决于用户的答案,因此它不起作用。这看起来很简单,但我对Java还不熟悉,似乎无法让它工作。谢谢大家的帮助Java 为什么可以';我不能在if语句中检查一个方法是否返回true吗?,java,if-statement,compiler-errors,boolean,Java,If Statement,Compiler Errors,Boolean,我试图实现的是,我希望if语句检查我的方法verifyAnswer是否返回true,如果返回true,我希望它取消计时器。因此,我搜索了如何执行以下操作,但我发现的答案都说了类似的事情,但是我认为,由于我在方法中的论点取决于用户的答案,因此它不起作用。这看起来很简单,但我对Java还不熟悉,似乎无法让它工作。谢谢大家的帮助 public boolean verifyAnswer(String userAnswer) { String correctAnswer = t
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());
}
});
label_option_a=新的JLabel(“option a”);
label\u option\u a.addMouseListener(新的MouseAdapter(){
@凌驾
公共无效鼠标单击(鼠标事件arg0){
验证答案(label_option_a.getText());
}
});
因为您没有在verifyAnswer
方法中传递参数verifyAnswer
expect字符串参数
public boolean verifyAnswer(String userAnswer) { .. }
你应该这样打电话
else if(verifyAnswer("pass_what_argument_you_want_to_pass_for_user_answer")) {
t.cancel();
}
您应该在方法中更改true和false返回。那样
public boolean verifyAnswer(String userAnswer) {
String correctAnswer = this.questions.get(currentQuestionIndex).correctAnswerText;
if(userAnswer.equals(correctAnswer)) {
timer.pauseTimer();
JOptionPane.showMessageDialog(null, "Correct Answer");
return false;
}
else {
timer.pauseTimer();
JOptionPane.showMessageDialog(null, "Wrong Answer");
return true;
}
}
您的verifyAnswer
方法有一个字符串参数,但您没有向其传递任何参数。您希望userAnswer
的值是什么?为什么?我的verifyAnswer方法检查用户是否在四个错误问题之间正确回答,因此如果用户回答正确,则应返回true,反之亦然。但这并不能真正回答我的问题-您希望用户的答案来自哪里?这是一个方法参数,当您尝试调用该方法时,您没有传递它。很抱歉,我对此有点陌生,所以我不太明白,当您说“我希望用户的答案来自哪里”时,您的确切意思是什么?我不确定我应该传递什么样的论点来让它起作用。你应该传递“用户答案”——目前,我们不知道这是从哪里来的。您尚未显示用户提供答案的任何位置。例如,我们不知道是否有一个字段在某处包含该信息。您希望用户如何提供答案?您希望这些信息如何在程序中流动?没有迹象表明OP想要相反的结果(我强烈怀疑他们不想要)——这并没有解决“OP没有为userAnswer
传递参数”的问题