Uitzondering in thread "main" java.lang.ClassCastException:

stemmen
0

Ik gebruik een bestuurder naar een van mijn datastructuren (Binary Search Boom) te testen en ik hebben over deze kwestie te komen. -Het gebeurt er als ik steek meer dan 2 voorwerpen in de bst Wat ik probeer te doen: Ik ben het plaatsen van 4 objecten in de boom, dan ben ik het verwijderen van 2 objecten en vervolgens afdrukken van mijn vondst methode, zodat het toont wel of het niet vond de objecten die ik te vragen. bijvoorbeeld:

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

Ik krijg deze fout wanneer ik het in werking:

Uitzondering in thread main java.lang.ClassCastException: TreeNode kan niet worden geworpen java.lang.Comparable bij BinarySearchTree2.delete (BinarySearchTree2.java:83) bij Driver5.main (Driver5.java:36)

die wijst vervolgens naar de methode delete in mijn bst klasse die is:

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

}

de fout wijst direct op deze lijn in mijn methode delete:

nd.setItem((E)nd.getRight());
De vraag is gesteld op 17/09/2010 om 06:30
bron van user
In andere talen...                            


1 antwoorden

stemmen
2

Ik denk dat uw verklaring van E is "E breidt Comaprable", in dat geval, wanneer je belde nd.getRighthij terug TreeNode aanleg die heeft die vergelijkbaar zijn voor de cast om te slagen zijn.

De lijn waar de uitzondering is opgetreden moet onder uitzien voor de cast te passeren

nd.setItem(nd.getRight.getItem)
antwoordde op 17/09/2010 om 06:38
bron van user

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