Java:Equals()不正确比较
如果我不是真的被卡住了,我就不会在这里发帖了。我试图将两个字符串与equals()进行比较,遗憾的是它从未通过if函数。 代码如下: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 + " " +
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()
上没有尾随空格,不过为了将来参考,可以对两者进行修剪。