Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:Equals()不正确比较_Java_String_Compare_Equals - Fatal编程技术网

Java:Equals()不正确比较

Java:Equals()不正确比较,java,string,compare,equals,Java,String,Compare,Equals,如果我不是真的被卡住了,我就不会在这里发帖了。我试图将两个字符串与equals()进行比较,遗憾的是它从未通过if函数。 代码如下: public ListElement searchElement(String o) { ListElement le = first; while (le != null) { System.out.println("NAME : " + le.getName() + " : " + o + " " +

如果我不是真的被卡住了,我就不会在这里发帖了。我试图将两个字符串与equals()进行比较,遗憾的是它从未通过if函数。 代码如下:

 public ListElement searchElement(String o) {
        ListElement le = first;
        while (le != null) {
            System.out.println("NAME : " + le.getName() + " : " + o + " " + le.getName().equals(o));
            if (le.getName().equals(o))
            {                               
                return le;
            }
            le = le.next;
        }
        return null;
    }
以下是输出:

NAME : aa : aa   false
NAME : cc : aa   false
NAME : bb : aa   false
NAME : aa : bb   false
NAME : cc : bb   false
NAME : bb : bb   false
NAME : aa : cc   false
NAME : cc : cc   false
NAME : bb : cc   false
NAME : aa : aa   false
NAME : cc : aa   false
NAME : bb : aa   false
NAME : aa : bb   false
NAME : cc : bb   false
NAME : bb : bb   false
NAME : aa : cc   false
NAME : cc : cc   false

每次我比较2个相等的字符串时,程序都看不到它。有什么提示吗?

每个第二个字符串的末尾都有两个额外的空格;这可以通过将
le.getName().equals(o)
更改为
le.getName().equals(o.trim())
来解决。
String
中的
trim()
方法去除给定字符串开头或结尾的任何额外空格。

根据输出,字符串
o
结尾有一个额外空格。修剪
le.getName().trim().equals(o.trim())
后重试。比较前最好先修剪两个。提示:当我调试时,需要转储
字符串
s,我通常会在它们周围放置一些东西,比如
|
”或其他可见的内容,以便在字符串开头或结尾有多余空格时显示出来。对不起。这太容易了。但我花了一个小时来解决这个问题。我确实应该使用“|”作为标记,以计算空白。您必须学习如何调试代码?首先,您可以检查长度。可能有
name
也有尾随空格。在本例中,
le.getName()
上没有尾随空格,不过为了将来参考,可以对两者进行修剪。