Android 比较字符串与字符串不起作用
我有这个代码,对我来说,逻辑似乎是正确的。当输入值.toString()时,它会像应该的那样打印0123456789,因为这是我在editText字段中输入的值。有什么简单的东西我在这里错过了,或者这是罚款,我将不得不看看更远的地方Android 比较字符串与字符串不起作用,android,string,if-statement,Android,String,If Statement,我有这个代码,对我来说,逻辑似乎是正确的。当输入值.toString()时,它会像应该的那样打印0123456789,因为这是我在editText字段中输入的值。有什么简单的东西我在这里错过了,或者这是罚款,我将不得不看看更远的地方 Editable value = input.getText(); Log.i("Password entered: ", value.toString()); if(value.toString() == "0123456789"){ Log.i("Pas
Editable value = input.getText();
Log.i("Password entered: ", value.toString());
if(value.toString() == "0123456789"){
Log.i("Password entered: ", "yay it is working!");
} else {
Log.i("Password entered: ", "it is incorrect");
}
使用
.equals
比较字符串
if(value.toString().equals("0123456789"))
=测试参考平等性
value.toString().equals("0123456789")
.equals()测试值是否相等
value.toString().equals("0123456789")
将按预期工作。您可以将字符串与以下代码进行比较
value.toString().equalsIgnoreCase("0123456789");
它会给你最好的结果。试试这个:
((value.toString()).compareTo("0123456789") == 0){
//Do somthing here
}
非常感谢你!我现在觉得自己像个白痴!我们每天都学习新的东西@尼古拉斯:是的,所有人都是这样。use也可以使用
.equalsIgnoreCase
。谢谢,我现在一定会记住:)抱歉,我在等待15分钟倒计时:)这比.equals()更难阅读,并且只有当你真的对字符串的顺序感兴趣时才应该使用,而不仅仅是检查是否相等。在我看来,比较两个字符串要比比较equals()方法强得多。我不明白你为什么说它不可读???它不可读,因为每个维护代码的人都必须“解码”部分“compareTo(…)==0”,意思是“等于”。使用“equals()”解决方案时,您可以像阅读英国文学一样阅读代码。此外,很容易错误地编写“compareTo(…)!=0”或“compareTo(…)<0”或其他内容,而没有注意到这一点。对于“equals(…)”这个称呼,这基本上是不可能的。因此,从长远来看,这将避免更多的bug。