Unntak i tråden "main" java.lang.ClassCastException:

stemmer
0

Jeg har brukt en driver for å teste en av mine datastrukturer (binært søketre) og jeg har kommet over dette problemet. -Det skjer når jeg setter inn mer enn 2 gjenstander inn i bst -Hva jeg prøver å gjøre: Jeg setter inn 4 gjenstander inn i treet, så jeg sletter 2 objekter, og deretter skrive ut min finne metoden slik at den viser om ikke det funnet gjenstander jeg ber om. for eksempel:

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

Jeg får denne feilen når jeg kjører det:

Unntak i tråden hoved java.lang.ClassCastException: TreeNode kan ikke støpes til java.lang.Comparable ved BinarySearchTree2.delete (BinarySearchTree2.java:83) ved Driver5.main (Driver5.java:36)

som deretter peker på slettemetoden i min BST klassen som er:

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

}

feilen peker direkte til denne linjen i min slettemetode:

nd.setItem((E)nd.getRight());
Publisert på 17/09/2010 klokken 05:30
kilden bruker
På andre språk...                            


1 svar

stemmer
2

Jeg antar din erklæring E er "E strekker Comaprable", i så fall når du kalte nd.getRightdet tilbake TreeNode eksempel som må være sammenlignbare for skuespillerne å lykkes.

Linjen der unntaket oppstod skal se ut under for skuespillerne å passere

nd.setItem(nd.getRight.getItem)
Svarte 17/09/2010 kl. 05:38
kilden bruker

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