Εξαίρεση σε νήμα «κύριος» java.lang.ClassCastException:

ψήφοι
0

Έχω χρησιμοποιήσει ένα πρόγραμμα οδήγησης για τη δοκιμή ένα από δομές δεδομένων μου (Binary Search Tree) και έχω έρθει σε αυτό το θέμα. -Είναι συμβαίνει όταν τοποθετώ πάνω από 2 αντικείμενα μέσα στο BST-Τι προσπαθώ να κάνω: Είμαι εισαγωγή 4 αντικείμενα στο δέντρο, τότε είμαι διαγραφή 2 αντικείμενα, και στη συνέχεια εκτύπωση μέθοδο εύρημα μου, έτσι ώστε να εμφανίζει ή δεν βρήκε τα αντικείμενα που ζητώ. για παράδειγμα:

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

Θα λάβετε αυτό το σφάλμα όταν το τρέξετε:

Εξαίρεση στο νήμα κύριος java.lang.ClassCastException: TreeNode δεν μπορεί να ρίχνει στο java.lang.Comparable σε BinarySearchTree2.delete (BinarySearchTree2.java:83) σε Driver5.main (Driver5.java:36)

το οποίο στη συνέχεια δείχνει διαγραφής μέθοδο στην κατηγορία BST μου που είναι:

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

}

το σφάλμα επισημαίνει απευθείας σε αυτή τη γραμμή στο διαγραφής μέθοδο μου:

nd.setItem((E)nd.getRight());
Δημοσιεύθηκε 17/09/2010 στις 06:30
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
2

Υποθέτω δήλωση σας E είναι «Ε εκτείνεται Comaprable», σε αυτή την περίπτωση, όταν καλείται nd.getRightνα επιστρέψει TreeNode παράδειγμα που πρέπει να είναι συγκρίσιμα για το cast για να πετύχει.

Η γραμμή όπου η εξαίρεση συνέβη θα πρέπει να μοιάζει πιο κάτω για το cast για να περάσει

nd.setItem(nd.getRight.getItem)
Απαντήθηκε 17/09/2010 στις 06:38
πηγή χρήστη

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