[英]String arrays does not match
我的程序顯示一系列問題(逐個問題)。 在我寫完答案后,一條警告信息應告訴我答案是對還是錯。 問題是,即使我寫了正確的答案,警報消息也會顯示“錯誤”消息。
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();
}
}
});
問題是您正在將EditText
對象與String
字段進行比較。 您必須將String
與String
進行比較。
這是怎么做的:
String answer = ((EditText) findViewById(R.id.tvReponseF)).getText().toString();
if(answer.equals(answers[CurrentQuestionIndex]))
{
...
您需要從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();
}
}
});
問題是你在實際檢查答案是否正確之前增加了索引:
ask_question.setText(question[(CurrentQuestionIndex++) % (questions.length)]);
所以,如果問題索引是0,你會得到一個問題0,然后問題索引將變為1,因為++
運算符,你將閱讀答案1而不是0.我希望你理解這一點。 你需要做的是從這里刪除++
並將其放在這里:
if(answer.getText().toString().equals(answers[(CurrentQuestionIndex++) % (questions.length)]))
因為此時,您將閱讀正確的答案並轉到下一個索引。
編輯 :
這是你最大的問題。 另外你需要比較answer.getText().toString()
就像其他人已經注意到的那樣。
嘗試這個:
EditText et;//initialize first!!
et.getText().toString().equals(....);
EditText answer = (EditText) findViewById(R.id.tvReponseF);
if(answer.getText().toString().toLowerCase().equals(answers[CurrentQuestionIndex].toLowerCase()))
{
alertMessageRight();
} else {
alertMessageFalse();
}
}
我添加了toLowerCase()只是使問題不區分大小寫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.