繁体   English   中英

Java字符串比较无法正常工作

[英]Java string comparison not working as intended



过去,我已经在Java中做了很多字符串比较,但是这次似乎不起作用。
我知道一个事实,您必须使用.equals()函数才能比较Java中的字符串。

为了找出问题所在,我编写了以下代码段:
Log.e("testLogic", String.valueOf(taken.getText().toString().trim().equals('1'))); Log.e("testValue", taken.getText().toString().trim());
产生以下结果:

E/testLogic﹕ false
E/testValue﹕ 1
E/testLogic﹕ false
E/testValue﹕ 1
E/testLogic﹕ false
E/testValue﹕ 0

这似乎很奇怪,因为前两个“ testLogic”日志应该产生true。
该代码用于自定义列表适配器(如果有任何含义)。

/米克尔

这是因为您没有比较2个Strings 您必须这样说:

Log.e("testLogic", String.valueOf(taken.getText().toString().trim().equals("1")));

因为.equals()函数需要两个Strings 假设s1s2Strings ,则应该执行以下操作:

s1.equals(s2);

希望对您有帮助!

.equals()来自Object类。 每个类都从Object类继承它。 String类也从Object类继承它,并像这样覆盖它-

    public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = count;
            if (n == anotherString.count) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = offset;
            int j = anotherString.offset;
            while (n-- != 0) {
                if (v1[i++] != v2[j++])
                return false;
            }
            return true;
            }
        }
        return false;
  }  

而且String没有charequals方法的任何重载版本。 您可以看到String.equals()方法是否接受任何对象,但当它是任何类型而不是String时,它返回false 仅当提供的参数为String类型且有意义地等于时,它才返回true 所以你必须写-

Log.e("testLogic",String.valueOf(taken.getText().toString().trim().equals("1"))); 

代替 -

Log.e("testLogic", String.valueOf(taken.getText().toString().trim().equals('1')));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM