compareTo返回-1,即使字符串与Java匹配

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

我不明白为什么,我有一个由对象节点组成的二叉树,我不能真正发布所有代码,但它从文件中读取约会并根据他们的姓氏插入,目前我约有5个约会,我正在尝试添加基于姓氏的搜索功能

它会找到正确的节点,但不是返回0,而是返回-1

我的搜索方法

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());