Java 为什么可以';我不能在if语句中检查一个方法是否返回true吗?

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

我试图实现的是,我希望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());
        }
    });
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
传递参数”的问题