对象在返回语句之外变为null

时间:2017-12-03 23:41:31

标签: java

这可能是一个简单的问题,但我找到了答案,我只是在任何地方找不到它。我正在尝试使用一种方法来检查输入的答案与实际答案相比是否正确。实际答案由setter定义,getter也可以。但是在比较它的方法中,它变为空。这不是一个问题,为什么比较它们会返回null,但为什么correctAnswer首先为null。我很困惑,因为getCorrectAnswer()按预期工作。

以下是代码:

公共类MultipleChoiceQuestion实现Question {

String question;
String correctAnswer;

public String getQuestion() 
{
    return question;
}

public boolean isCorrectAnswer(String answer) 
{
    if (answer != correctAnswer)
    {
        return false;
    }
    return true;
}

public String getCorrectAnswer() 
{
    return correctAnswer;
}

public void setQuestion(String questionText){
    question = questionText;
}

public void setAnswer(String answer){
    correctAnswer = answer;
}

}

“answer!= correctAnswer”不起作用,因为该方法中的correctAnswer为空。

1 个答案:

答案 0 :(得分:0)

除非要检查两者是否完全相同,即同一个对象,否则不应对类使用相等性。您应该使用Object.equals。所以answer.equals(correctAnswer)更正确。另外,你确定首先调用了setter吗?