Výjimkou závitů „hlavní“ java.lang.ClassCastException:

hlasů
0

Byl jsem pomocí ovladače otestovat jednu ze svých datových struktur (strom binárního vyhledávání) a já jsem narazil na toto téma. -To se stane, když jsem vložit více než 2 objektů do BST Co se snažím dělat: Jsem vkládání 4 objektů do stromu, pak jsem mazání 2 objektů, a pak vytisknout svou metodu find, takže se zobrazí, zda Nebylo nalezeno objekty žádám. například:

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));

Dostávám tuto chybu, když jsem jej spustit:

Výjimka ve vláknu „hlavní“ java.lang.ClassCastException: TreeNode nelze házet do java.lang.Comparable na BinarySearchTree2.delete (BinarySearchTree2.java:83) při Driver5.main (Driver5.java:36)

který pak poukazuje na smazání metodu v mém BST třídy, která je:

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));
        }    

}

chyba poukazuje přímo na této trati v mém odstraněny způsobem:

nd.setItem((E)nd.getRight());
Položena 17/09/2010 v 06:30
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
2

Myslím, že vaše prohlášení o E je „E rozšiřuje Comaprable“, v tom případě, když jsi volal nd.getRight, že se vrátil TreeNode instanci, která má být srovnatelná pro obsazení uspět.

Řádek, kde došlo výjimka by měla vypadat níže obsazení projít

nd.setItem(nd.getRight.getItem)
Odpovězeno 17/09/2010 v 06:38
zdroj uživatelem

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