2016-07-08 9 views
5

Programım bir dizi soru görüntüler (tek tek sorulur). Bir cevap yazdıktan sonra, bir uyarı mesajı cevabın doğru mu yanlış mı olduğunu söylemelidir. Sorun şu ki, doğru cevabı yazsam bile uyarı mesajı bir "yanlış" mesaj gösteriyor.Dize dizileri eşleşmiyor

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

'answer' dizinizi gönderir. –

cevap

2

bu deneyin:

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

Sorun şu ki sen String alana sahip bir EditText nesneyi karşılaştırma olmamız. Bunun yerine String'u String ile karşılaştırmalısınız.

İşte bunu nasıl: Sen EditText nesneden metni almak gerekir

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

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

hepsi bu değil, bu sadece küçük bir sorun. Yanlış yerde dizin sayacını arttırıyor, cevabımı kontrol et, ben de bunu kapattım. – Vucko

+0

Teşekkürler! Kod çalışıyor –

3

. EditText nesnesini String ile karşılaştırıyorsunuz.

Yani, tam kod aşağıdaki gibi görünmelidir:

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

sorun aslında kontrol etmeden önce indeksi artan olduğunuzu eğer doğru cevap en:

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

Yani eğer soru indeksi 0, bir soru 0 alacaksınız, o zaman soru indeksi ++ operatör nedeniyle 1 olacak ve 0 yerine 1 cevabı okuyor olacaksınız. Umarım bunu anlıyoruz. Ne yapmanız gereken buradan ++ kaldırın ve buraya koyun geçerli:

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

bu noktada, uygun cevabı okunacak ve sonraki dizine geçmek için.

DÜZENLEME:

Bu

en büyük sorunun. Ayrıca answer.getText().toString()'u zaten fark ettiğiniz diğer oyuncularla karşılaştırmanız gerekiyor.

+0

İyi iş! Teşekkürler! –

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

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

} 

toLowerCase() öğesini ekledim, yalnızca sorun büyük/küçük harf duyarlı değil.