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



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

它找到了正确的Node,但没有返回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
        }   
    }

我的输出

Printing Tree
Bob, Saget,     Zafar,      1/3/4,      3/5/6
Kamer, Silo,        Dkido,      3/5/6,      3/5/7
Kevin, Wu,      Sine,       4/5/6,      3/5/6
Mano, Billi,        Zafar,      4/5/6,      3/4/5
**************************************
*    XYZ Hospital Appointment Maker  *
*   1. Add Appointment               *
*   2. Search by Last Name           *
*   3. Print Tree                    *
*   4. Exit                          *
2

 Enter Last Name: Kevin
Printing t.info Bob 
 Compare Result: 9
 Printing X: Kevin
Printing t.info Kamer 
 Compare Result: 4
 Printing X: Kevin
Printing t.info Kevin 
 Compare Result: -1
 Printing X: Kevin

虽然字符串看起来相似,但可能有尾随空格。因此使用trim()compareTo()方法。更改此

   int compareResult =  x.compareTo(t.info.getLastName());    

  int compareResult =  x.compareTo(t.info.getLastName().trim());    

您可能还想在调用compareTo 之前修剪x

最新更新