Wyjątek w wątku „głównym” java.lang.ClassCastException:

głosy
0

I zostały z wykorzystaniem sterownika przetestować jeden z moich struktur danych (Binary Search Tree) i mam natknąć tej kwestii. -To się dzieje, kiedy wstawić więcej niż 2 przedmiotów do BST -Co ja staram się robić: ja wkładając 4 obiektów w drzewie, a następnie ja usuwanie 2 obiekty, a następnie drukowanie mój sposób znaleźć tak, że wyświetla czy nie znaleziono obiektów I to życzenie. na przykład:

BinarySearchTree2<Integer> theData1 = new BinarySearchTree2<Integer>();
     long start1 = System.currentTimeMillis();  
   theData1.insert(c1);
  theData1.insert(c2);
  theData1.insert(c3);
    theData1.delete(c2);
    System.out.println(theData1.find(c1));
    System.out.println(theData1.find(c2));
    System.out.println(theData1.find(c3));
    System.out.println(theData1.find(c4));

Otrzymuję ten błąd, gdy uruchamiam go:

Wyjątek w wątku „main” java.lang.ClassCastException: TreeNode nie mogą być oddane do java.lang.Comparable na BinarySearchTree2.delete (BinarySearchTree2.java:83) w Driver5.main (Driver5.java:36)

które następnie zwraca się do usuwania metody w mojej klasie BST, który jest:

public void delete(E item) {

        TreeNode<E> nd = root;

        while(nd != null && nd.getItem().compareTo(item) != 0)
        {
            if(nd.getItem().compareTo(item) < 0)
                nd = nd.getRight();

            else
                 nd = nd.getLeft();
        }

        if( nd.getLeft() == null && nd.getRight() == null)
        {
            nd = null;
        }

        else if(nd.getLeft() != null && nd.getRight() == null)

        {
            nd.setItem((E)nd.getLeft());

        }
        else if(nd.getLeft() == null && nd.getRight() != null)
        {    
            nd.setItem((E)nd.getRight());

        }

        else if(nd.getLeft() != null && nd.getRight() != null)
        {

            nd.setItem((E)findsucc(nd));
        }    

}

zwraca błąd bezpośrednio do tej linii w moim metody Delete:

nd.setItem((E)nd.getRight());
Utwórz 17/09/2010 o 06:30
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
2

Chyba twoja deklaracja E jest „E rozciąga Comaprable”, w tym przypadku, gdy nazywa nd.getRightpowrócił instancji TreeNode, który musi być porównywalny do obsady, aby odnieść sukces.

Linia gdzie wyjątek wystąpił powinien wyglądać jak poniżej obsada przejść

nd.setItem(nd.getRight.getItem)
Odpowiedział 17/09/2010 o 06:38
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more