我有四个复选框以及一个显示问题的文本视图。我试图创建一个带有复选框的简单的多选测验。如果用户选择正确的答案,我设法向用户显示敬酒。如果他们选择了错误的答案,则敬酒。我遇到的问题是,如果用户选择所有答案,它将被视为正确。有人可以帮我弄这个吗。结果变量将复选框结果存储为字符串,我正在将其与正确答案进行比较。
if(result1 == firstQuestion.getCorrectAnswer() && result2 == firstQuestion.getSecondCorrectAnswer()){
currentScore = currentScore + 1 + userScore;
Intent i = new Intent(CheckBoxQuestions.this, ResultScreen.class);
i.putExtra("finalScore",currentScore);
startActivity(i);
}else{
Toast.makeText(CheckBoxQuestions.this, "Incorrect", Toast.LENGTH_SHORT).show();
currentScore = currentScore + 0 + userScore;
Intent i = new Intent(CheckBoxQuestions.this, ResultScreen.class);
i.putExtra("finalScore",currentScore);
startActivity(i);
}
}
});
}
答案 0 :(得分:0)
您正在将结果与==
进行比较。 ==
操作比较两个对象的引用(或原语的值)。由于字符串是对象,因此不建议使用==
来比较字符。请改用.equals()
方法。 <String>.equals(<other String>)
.equals()
中定义的Object
方法与==
相同。但是,对于字符串,许多对象(例如字符串)会覆盖.equals()
,以逐字符进行比较。
答案 1 :(得分:0)
您应该使用如下所述的RadioGroup和RadioButton,它将只允许您选择一个单选按钮,这只是一个答案。单选按钮将在单个单选组中。
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Radio Button 1"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Radio Button 2"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Radio Button 3"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Radio Button 4"/>
</RadioGroup>
答案 2 :(得分:0)
一种优雅的解决方案是使用按钮组,如果在您遇到问题的情况下只能进行一个选择。如果用户应该能够选择不同的解决方案(可能有几个正确的答案),那么您可能应该反转测试。这是对用户没有错误回答的测试。
使用代码显示后者:
if(isCorrectAnswers(firstQuestion) && !hasIncorrectAnswer(firstQuestion)) {
... // React for correct answer
} else {
... // React for incorrect answer
}
使用
private boolean isCorrectAnswers(AnswerSelectionChoice choice) {
return choice.isSelectedCorrectChoice() && isSelectedSecondCorrectChoice() && ...;
}
和
private boolean hasIncorrectAnswer(AnswerSelectionChoice choice) {
return choice.isSelectedIncorrectChoice() || isSelectedSecondIncorrectChoice() || ...;
}