Java: специальный тип, неверный тип операнда для бинарного оператора - PullRequest
0 голосов
/ 19 ноября 2018

Я работаю на деревьях в Java.В настоящее время я работаю над извлечением и вставкой методов.Вот методы:

public void insert(E item) {


    if(item <= node.item){
        if(node.left == null){
            node.left = new TreeNode<E>(item);
        }
        else{
            insert(node.left.item);
        }
    }
    else{
        if(node.right == null){
            node.right = new TreeNode<E>(item);
        }
        else{
            insert(node.right.item);
        }
    }

    root.item = item;
}

public E retrieve(E item) {

    if(item == node.item){
        return item;
    }
    else if(item <= node.item){
        if(node.left == null){
            return null;
        }
        else{
            return retrieve(node.left.item);
        }
    } else{
        if(node.right == null){
            return null;
        }
        else {
            return retrieve(node.right.item);
        }
    }

}

В приведенном выше коде операторы if:

if(item <= node.item)

... дают мне следующие ошибки:

java: bad operand types for binary operator '<='
first type:  E
second type: E

Я немного сбит с толку, потому что когда я переключаю операнд с помощью CompareTo (), это дает мне знать, что результат логический, но мы ожидаем int.Я не слишком уверен, как их сравнивать;точнее с чем их сравнивать.SOS!

Спасибо, T

1 Ответ

0 голосов
/ 19 ноября 2018

Дайте своему учителю сердечный приступ, давайте сначала исправим его общий тип. Это

public class BinarySearchTree<E extends Comparable<E>> extends BinaryTree<E>

должно быть

public class BinarySearchTree<E extends Comparable<? super E>> extends BinaryTree<E>

И вы можете использовать Comparable<T> для выполнения сравнения. То есть

if(item <= node.item){

должно быть

if (item.compareTo(node.item) <= 0)

И так далее, используя item.compareTo вместо <, == или >.

...