Java树错误
我正在尝试实现一个基于数组的树,其中每个节点都有一个子节点列表,我得到了一个需要帮助修复的错误 错误:Java树错误,java,Java,我正在尝试实现一个基于数组的树,其中每个节点都有一个子节点列表,我得到了一个需要帮助修复的错误 错误: Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Lassign2Trees.ArrayTreeNode; at assign2Trees.ArrayTree.<init>(ArrayTree.java:15) at assign2Tre
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Lassign2Trees.ArrayTreeNode;
at assign2Trees.ArrayTree.<init>(ArrayTree.java:15)
at assign2Trees.ArrayTree.main(ArrayTree.java:97
线程“main”java.lang.ClassCastException:[Ljava.lang.Object;中的异常;无法强制转换为[Lassign2Trees.ArrayTreeNode;
在assign2Trees.ArrayTree.(ArrayTree.java:15)
位于assign2Trees.ArrayTree.main(ArrayTree.java:97
)
我相信错误来自这里:
ArrayTreeNode<E>[] tree = (ArrayTreeNode<E>[]) new Object[1];
ArrayTreeNode[]树=(ArrayTreeNode[])新对象[1];
ClassCastException:[Ljava.lang.Object;无法强制转换为[Lassign2Trees.ArrayTreeNode;
在assign2Trees.ArrayTree.(ArrayTree.java:15)
指这一行:
ArrayTreeNode<E>[] tree = (ArrayTreeNode<E>[]) new Object[1];
ArrayTreeNode[]树=(ArrayTreeNode[])新对象[1];
不能将对象[]
强制转换为任何其他类型
即使这样做有效,紧接着还有另一个错误:Java中的数组从0开始索引,而不是从1开始。要访问数组中的第一个元素,请参考
树[0]
@Brian,您不能实例化通用数组(即ArrayTreeNode[size]
)。要在数组中存储节点,只需删除类型参数(部分)并使用原始类型-ArrayTreeNode[]tree=new ArrayTreeNode[size]
。此外,我认为您可能需要重新考虑您的总体策略-您似乎在数组中混合了存储元素(但是数组的大小只有1,你永远不会调整它的大小)并将节点存储在树中,同时引用父节点和子节点。假设这是HW,我认为这不是要求你做的。Wikipedia对在数组中存储二叉树的常用方法有一个很好的描述:请使用更具描述性的标题。
ArrayTreeNode<E>[] tree = (ArrayTreeNode<E>[]) new Object[1];