Excepție în firul java.lang.ClassCastException „principal“:

voturi
0

Am fost folosind un driver pentru a testa una dintre structurile mele de date (binar de căutare copac) și am venit peste această problemă. -Este se întâmplă când introduceți mai mult de 2 obiecte în BST Ce am încercat să fac: Sunt inserarea 4 obiecte în copac, atunci eu șterg 2 obiecte, și apoi tipărirea metoda mea descoperire, astfel încât să afișeze dacă nu a găsit obiectele cer. de exemplu:

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

Am primit această eroare atunci când am rula:

Excepție în fir principal java.lang.ClassCastException: TreeNode nu poate fi distribuit la java.lang.Comparable la BinarySearchTree2.delete (BinarySearchTree2.java:83) la Driver5.main (Driver5.java:36)

care apoi indică metoda de ștergere din clasa mea BST, care este:

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

}

eroarea indică în mod direct la această linie în metoda mea de ștergere:

nd.setItem((E)nd.getRight());
Întrebat 17/09/2010 la 06:30
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
2

Cred că declarația ta de E este „E se extinde Comaprable“, în acest caz , atunci când ai sunat - nd.getRightl returnat TreeNode instanță , care trebuie să fie comparabile pentru a reuși exprimate.

Linia în care excepția apărut ar trebui să arate ca mai jos exprimate pentru a trece

nd.setItem(nd.getRight.getItem)
Publicat 17/09/2010 la 06:38
sursa de către utilizator

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