我的程序显示一系列问题(逐个问题)。在我写完答案后,一条警告信息应告诉我答案是对还是错。 问题在于,即使我写了正确的答案,警报信息也会显示" false"消息。
final String questions[] = {"Who's Tom?", "Who's Luca?", "Who's Flavie?"}
final String answers[] = {"American", "Italian", "French"}
// display question
answer_question.setOnClickListener(new View.OnClickListener() {
int CurrentQuestionIndex = 0;
public void onClick(View v) {
ask_question.setText(question[(CurrentQuestionIndex++) % (questions.length)]);
// discuss question versus answer
EditText answer = (EditText) findViewById(R.id.tvReponseF);
if (answer.equals(answers[CurrentQuestionIndex])) {
alertMessageRight();
} else {
alertMessageFalse();
}
}
});
答案 0 :(得分:6)
问题是您要将EditText
对象与String
字段进行比较。您必须将String
与String
进行比较。
以下是如何操作:
String answer = ((EditText) findViewById(R.id.tvReponseF)).getText().toString();
if(answer.equals(answers[CurrentQuestionIndex]))
{
...
答案 1 :(得分:3)
试试这个:
EditText et;//initialize first!!
et.getText().toString().equals(....);
答案 2 :(得分:3)
您需要从EditText
对象获取文本。您正在将EditText
对象与String
进行比较。
因此,您的完整代码应如下所示:
final String questions[] = {"Who's Tom?", "Who's Luca?", "Who's Flavie?"}
final String answers[] = {"American", "Italian", "French"}
// display question
answer_question.setOnClickListener(new View.OnClickListener() {
int CurrentQuestionIndex = 0;
public void onClick(View v) {
ask_question.setText(question[(CurrentQuestionIndex++) % (questions.length)]);
// discuss question versus answer
EditText editText = (EditText) findViewById(R.id.tvReponseF);
if(editText.getText().toString().equals(answers[CurrentQuestionIndex]))
{
alertMessageRight();
} else {
alertMessageFalse();
}
}
});
答案 3 :(得分:3)
问题是您在实际检查答案是否正确之前提高了索引:
ask_question.setText(question[(CurrentQuestionIndex++) % (questions.length)]);
因此,如果问题索引为0,您将得到问题0,那么问题索引将因为++
运算符而变为1,而您将阅读答案1而不是我希望你明白这一点。您需要做的是从此处删除++
并将其放在此处:
if(answer.getText().toString().equals(answers[(CurrentQuestionIndex++) % (questions.length)]))
因为此时,您将阅读正确的答案并转到下一个索引。
修改强>:
这是你最大的问题。你还需要比较其他人已经注意到的answer.getText().toString()
。
答案 4 :(得分:2)
EditText answer = (EditText) findViewById(R.id.tvReponseF);
if(answer.getText().toString().toLowerCase().equals(answers[CurrentQuestionIndex].toLowerCase()))
{
alertMessageRight();
} else {
alertMessageFalse();
}
}
我添加了toLowerCase()只是使问题不区分大小写。