字符串数组与

时间:2016-07-08 19:00:40

标签: java android arrays

我的程序显示一系列问题(逐个问题)。在我写完答案后,一条警告信息应告诉我答案是对还是错。 问题在于,即使我写了正确的答案,警报信息也会显示" 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();
        }
    } 
});

5 个答案:

答案 0 :(得分:6)

问题是您要将EditText对象与String字段进行比较。您必须将StringString进行比较。

以下是如何操作:

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()只是使问题不区分大小写。