2016-07-08 7 views
5

से मेल नहीं खाती है मेरा प्रोग्राम प्रश्नों की एक सरणी प्रदर्शित करता है (प्रश्न एक-एक-एक करके)। एक उत्तर लिखने के बाद, एक चेतावनी संदेश मुझे बताएगा कि मेरा जवाब सही है या गलत है। समस्या यह है कि, अगर मैं सही उत्तर लिखता हूं तो भी चेतावनी संदेश "झूठा" संदेश प्रदर्शित करता है।स्ट्रिंग सरणी

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

अपने 'उत्तर' सरणी पोस्ट करें। –

उत्तर

2

इस प्रयास करें:

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

समस्या यह है कि आप एक String क्षेत्र के साथ एक EditText वस्तु की तुलना कर रहे है। आपको String की तुलना String के साथ तुलना करनी चाहिए।

यहाँ यह कैसे करना है:

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

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

यह सब कुछ नहीं है, यह सिर्फ एक मामूली मुद्दा है। वह गलत जगह पर इंडेक्स काउंटर बढ़ा रहा है, मेरा जवाब जांचें, मैंने इसे भी कवर किया। – Vucko

+0

धन्यवाद! कोड –

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

समस्या यह है कि आप वास्तव में जाँच से पहले सूचकांक में वृद्धि कर रहे हैं अगर जवाब के सही:

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

तो अगर प्रश्न सूचकांक 0 है, आपको एक प्रश्न 0 मिलेगा, तो प्रश्न सूचकांक ++ ऑपरेटर की वजह से 1 बन जाएगा और आप 0 के बजाय उत्तर 1 पढ़ रहे होंगे। मुझे उम्मीद है कि आप इसे समझेंगे। आपको क्या करने की जरूरत है यहां से ++ को हटा दें और इसे यहाँ जगह है:

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

क्योंकि इस बिंदु पर, आप उचित जवाब पढ़ सकते हैं और अगले सूचकांक पर चले जाएंगे।

संपादित:

यह तुम्हारी सबसे बड़ी समस्या थी। इसके अलावा आपको answer.getText().toString() की तुलना करने की आवश्यकता है क्योंकि अन्य लोगों ने पहले ही देखा है।

+0

काम करता है अच्छा काम! धन्यवाद! –

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

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

} 

मैंने टूलोवरकेस() को केवल समस्या केस असंवेदनशील बना दिया।

संबंधित मुद्दे