compareTo返回-1,即使字符串与Java匹配
我不明白为什么,我有一个由对象节点组成的二叉树,我不能真正发布所有代码,但它从文件中读取约会并根据他们的姓氏插入,目前我约有5个约会,我正在尝试添加基于姓氏的搜索功能 它会找到正确的节点,但不是返回0,而是返回-1 我的搜索方法compareTo返回-1,即使字符串与Java匹配,java,string,search,binary-search-tree,compareto,Java,String,Search,Binary Search Tree,Compareto,我不明白为什么,我有一个由对象节点组成的二叉树,我不能真正发布所有代码,但它从文件中读取约会并根据他们的姓氏插入,目前我约有5个约会,我正在尝试添加基于姓氏的搜索功能 它会找到正确的节点,但不是返回0,而是返回-1 我的搜索方法 private boolean contains(String x, BinaryTreeNode t){ if (t == null) return false; int compareResult = x
private boolean contains(String x, BinaryTreeNode t){
if (t == null)
return false;
int compareResult = x.compareTo(t.info.getLastName());
System.out.println("Printing t.info " + t.info.getLastName() + "\n Compare Result: " + compareResult + "\n Printing X: " + x);
if(compareResult < 0){
// System.out.println("\n Less Than \n");
return contains(x,t.left); // Its in the left subtree
}
else if (compareResult > 0){
// System.out.println("\n Greater Than \n");
return contains( x, t.right); // Its in the right subtree
}
else {
System.out.println("\n" + t.info + "\n");
return true; // Found Match
}
}
虽然字符串看起来很相似,但可能有尾随空格。因此,使用
trim()
和compareTo()方法。改变这个
int compareResult = x.compareTo(t.info.getLastName());
到
在调用compareTo
之前,您可能还想修剪x
,尝试使用trim,int compareResult=x.compareTo(t.info.getLastName().trim());哥们儿,你真是个天才,不是刚从经验中学到的,现在让我来回答。如果有帮助,那么接受答案。
int compareResult = x.compareTo(t.info.getLastName());
int compareResult = x.compareTo(t.info.getLastName().trim());