İplik "ana" java.lang.ClassCastException içinde İstisna:

oy
0

Benim veri yapıları (İkili Arama Ağacı) birini test etmek için bir sürücü kullanıyorum ve ben bu konuda rastlamak var. Ben ağaca 4 nesneleri ekleyerek am sonra 2 nesneleri silme ve sonra olsun veya görüntüler böylece benim bulmak yöntemini basıyorum,: Ben yapmaya çalışıyorum -Ne bst içine 2'den fazla nesne eklediğinizde -Bu olur değil istekte bulunmuş nesneler. Örneğin:

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

bunu çalıştırdığınızda bu hatayı alırsınız:

İş parçacığı ana java.lang.ClassCastException: TreeNode Driver5.main at BinarySearchTree2.delete (BinarySearchTree2.java:83) (Driver5.java:36) de java.lang.Comparable artığını olamaz

bu daha sonra benim BST sınıfında silme yöntemine işaret:

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

}

Hata benim silmek yönteminde bu hat doğrudan işaret:

nd.setItem((E)nd.getRight());
Oluştur 17/09/2010 saat 06:30
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
2

Ben E senin beyanı beni aradığında bu durumda, "E Comaprable uzanır" olduğunu tahmin nd.getRightdöküldüğü başarılı olmak için karşılaştırılabilir olması gerekir TreeNode örneğini döndü.

İstisna döküm geçmek için aşağıdaki gibi görünmelidir oluştu hat

nd.setItem(nd.getRight.getItem)
Cevap 17/09/2010 saat 06:38
kaynak kullanıcı

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