2016-12-08 46 views
1

我想将一个小精灵类型(名称+数字)添加到二叉搜索树中。这是我的BinarySearchClass。运算符对类类型无效

public void insert(Pokemon n) { // n is data/key 
    Node newNode = new Node(n); 
    if (root == null) { // empty tree 
     root = newNode; 
    } else { 
     Node current = root; 
     Node parent = null; 
     boolean flag = true; 
     while (flag) { 
      parent = current; 
      if (n < current.data) { 
       current = current.left; 
       if (current == null) { 
        parent.left = newNode; 
        flag = false; 
       } 
      } // if(n < current.data) 
      else { 
       current = current.right; 
       if (current == null) { 
        parent.right = newNode; 
        flag = false; 
       } // current == null} 
      } // else} 
     } // while(flag) 
    } // root != null 
} 

我得到的错误是在n < current.data。我无法做到这一点,它只是比较口袋妖怪的数量,如Kadabra 64或Bulbsaur 1,但也使用整个口袋妖怪类型。我是否必须在我的口袋妖怪构造函数类中使用getNumber()? 使用此testDriver代码:

BinarySearchTree T = new BinarySearchTree(); 
    for (int i = 0; i < userNumber; i++){ 
     T.insert(poke[i]); 
    } 
+0

'<'是用于比较数字的运算符。口袋妖怪不是一个数字。也许你想要n.getNumber()

+0

YESS !!非常感谢!那真是愚蠢。 –

+0

这就是为什么有意义的变量名称是个好主意。 'n'传统上是代数中的一个数值。就个人而言,我会将方法签名定义为“公共无效插入(口袋妖怪口袋妖怪)'。 – VGR

回答

1

问题与

n < current.data 

Ñ不是原始类型的变量。它代表一个Pokemon对象。而事情是:Java确实不是支持运算符重载参考类型。

什么工作:

n.someNumericalField < current.data 

(假设current.data也代表了一些基本类型)

或许

n.lessThan(current.data) 

(其中lessThan()将是一个方法你的在你的口袋妖怪课中实施)

0

您正试图将Pokemon与数据进行比较。您需要执行以下操作:

//assuming that n.data is an integer or other comparable value 
if (n.data < current.data) 
相关问题