【问题标题】:How to compare input text with string array in android studio? [duplicate]如何在android studio中将输入文本与字符串数组进行比较? [复制]
【发布时间】:2016-08-06 08:03:14
【问题描述】:

我是应用程序开发的新手,在 android studio 中编码时遇到问题。我想将输入文本与字符串数组中的字符串进行比较。由于某种原因,它不起作用。当我在 Eclipse 中尝试 java 代码时,它可以工作。

我已经运行调试器并且输入消息是“香蕉”。调试器还在 CheckAnswer(message) 中显示 message = "Banana"。但由于某种原因,该函数没有返回“Right”。它返回“错误”

我希望有人可以帮助我。

这是我的代码:

public void sendMessage(View view) {
    // Do something in response to button
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    String message2 = CheckAnswer(message);
    intent.putExtra(CORRECT_MESSAGE, message2);
    startActivity(intent);

}

public static String CheckAnswer(String string) {
    String rightanswer[] = {"Apple", "Banana", "Coconut"};
    String answer = null;
    for (int i = 0; i <= rightanswer.length-1; i++) {
        if (string == rightanswer[i]) {
            answer =  "Right!!";
            break;
        }
        else answer = "Wrong.";
    }
    return answer;
}

【问题讨论】:

  • 为什么不直接返回truefalse 而不是对错?

标签: java android arrays android-studio android-edittext


【解决方案1】:

比较两个字符串的正确方法是使用equals()函数而不是==

所以改变:

       if (string == rightanswer[i]) {
            answer =  "Right!!";
            break;
        }

到:

        if (string.equals(rightanswer[i])) {
            answer =  "Right!!";
            break;
        }

【讨论】:

    【解决方案2】:

    在Java中比较字符串时,最好使用字符串的equals()方法,如下所示:

    if(someValue.equals(somethingElse){}
    

    我希望这会有所帮助!

    【讨论】:

    • 谢谢! '==' 不起作用的原因是什么?
    • @L.B 阅读我在上面的 cmets 中标记的副本。
    • 因为 == 只比较对象引用而不是那些对象的内容
    猜你喜欢
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    • 2020-01-10
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2016-03-12
    相关资源
    最近更新 更多