2016-07-08 7 views
5

私のプログラムは、一連の質問(質問を1つずつ)を表示します。私が答えを書いた後、私の答えが正しいかどうかを警告するメッセージが表示されます。 問題は、正しい回答を書いても、警告メッセージに「偽」メッセージが表示されることです。文字列配列が一致しません

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

あなたの 'answers'配列を投稿します。 –

答えて

2

これを試してみてください:

EditText et;//initialize first!! 
et.getText().toString().equals(....); 
6

問題は、あなたがStringフィールドでEditTextオブジェクトを比較しているということです。代わりにStringStringを比較する必要があります。

は、ここでそれを行う方法は次のとおりです。あなたがEditTextオブジェクトからテキストを取得する必要があります

String answer = ((EditText) findViewById(R.id.tvReponseF)).getText().toString(); 

if(answer.equals(answers[CurrentQuestionIndex])) 
{ 
    ... 
+0

それはすべてではない、それはちょっとした問題です。彼は間違った場所でインデックスカウンターを増やしている、私の答えをチェックする、私もそれをカバーした。 – Vucko

+0

ありがとう!コードは動作します –

3

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

問題は、あなたが実際に確認する前に、インデックスを増加していることであるかの正解者:

ask_question.setText(question[(CurrentQuestionIndex++) % (questions.length)]); 

もしそうなら質問番号が0の場合は質問0が表示され、質問番号は++という演算子のため1になり、0ではなく1の答えが表示されます。この時点で、あなたは正しい答えを読んであげると、次のインデックスに移動するので

if(answer.getText().toString().equals(answers[(CurrentQuestionIndex++) % (questions.length)])) 

を:何をする必要がある、ここから++を削除し、それをここに置いてあります。

EDIT

これはあなたの最大の問題でした。また、既に気付いた他の人とanswer.getText().toString()を比較する必要があります。

+0

良い仕事!ありがとう! –

2
EditText answer = (EditText) findViewById(R.id.tvReponseF); 

if(answer.getText().toString().toLowerCase().equals(answers[CurrentQuestionIndex].toLowerCase())) 
{ 
    alertMessageRight(); 
} else { 
    alertMessageFalse(); 
} 

} 

toLowerCase()は、問題の大文字小文字を区別しないようにしました。

関連する問題