运算符对类类型无效

时间:2016-12-08 18:05:55

标签: java arguments

我想将一个口袋妖怪类型(名称+号码)添加到二叉搜索树中。这是我的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&lt; current.data。我不能这样做它只是比较口袋妖怪的数量,如Kadabra 64或Bulbsaur 1,但也使用整个口袋妖怪类型。我是否必须在我的Pokemon构造函数类中使用getNumber()? 使用此testDriver代码:

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

2 个答案:

答案 0 :(得分:1)

的问题
n < current.data

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

什么可行:

n.someNumericalField < current.data

(假设current.data也代表一些原始类型)

或者

n.lessThan(current.data)

(其中lessThan()在你的Pokemon课程中实现的方法)

答案 1 :(得分:0)

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

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