숙제를하고 있는데 코드를 실행하려고 할 때마다 클래스 캐스트 예외가 계속 발생하는 이유를 알 수 없습니다. 나는 그것이 (path.get (i)) 때문이라고 생각하지만, 그것을 해결할 방법을 찾지 못하는 것 같습니다. I 나타나는 오류는Java에서 제네릭을 사용하는 동안 클래스 캐스트 예외가 발생했습니다.
Exception in thread "main" java.lang.ClassCastException: avltreend.BinarySearchTreeND$BSTNodeND cannot be cast to avltreend.AVLtreeND$AVLTreeNode
at avltreend.AVLtreeND.balancePath(AVLtreeND.java:64)
at avltreend.AVLtreeND.insert(AVLtreeND.java:27)
at avltreend.AVLtreeND.TestAVL(AVLtreeND.java:233)
at avltreend.AVLtreeND.main(AVLtreeND.java:244)
Java Result: 1
코드의 일부는
private void balancePath(K d) {
ArrayList<BSTNodeND<K>> path = path(d);
for (int i = path.size() - 1; i>= 0; i--) {
// System.out.println(path);
AVLTreeNode<K> A = (AVLTreeNode<K>)(path.get(i));
findheight(A);
AVLTreeNode<K> POA = (A == root) ? null :
(AVLTreeNode<K>)(path.get(i - 1));
오류가 5 선 위에서 실행할 때 나타나는 것 같습니다이다.
class BSTNodeND < L extends Comparable< ? super L > > {
L data;
BSTNodeND <L> left, right, parent;
BSTNodeND (L d) {data = d;}
BSTNodeND (L d, BSTNodeND <L> p) {data = d; parent = p;}
public String toString() {
return data.toString();} // end toString method
}
protected class AVLTreeNode<L extends Comparable<? super L>>
extends BSTNodeND<L> {
protected int height = 0; // New data field
public AVLTreeNode(L d) {
super(d);
}
그리고 그것은 AVLTreeNode 클래스입니다.
작동 예제를 변경했기 때문에이 두 클래스가 함께 작동하지 않는 이유를 알 수 없습니다. 작동해야합니다. 제공 할 수있는 도움에 감사드립니다.
삽입 논리에 'AVLTreeNode'를 생성해야 할 때 오류가 발생하여 'BSTNodeND'가 생성되지만이 코드를 제공하지 않았습니다. –