我不知道为什么我无法做一些简单的事情,如将一般类型的对象推入堆栈。我已经决定需要一些帮助来解决这个问题。这就是我所拥有的:
private void preOrderTrav(BSTnode<K> node) {
if(node != null){
myStack.push(node); //Null pointer exception
while(!myStack.isEmpty()){
myStack.pop();
node = node.getLeft();
myStack.push(node.getRight());
myStack.push(node.getLeft());
}
}
}
这是从我的构造函数调用的:
public BSTSortedListIterator(BSTnode<K> root) {
preOrderTrav(root);
}
有人有什么想法吗?顺便说一下,我得到了这个错误:
Exception in thread "main" java.lang.NullPointerException
at BSTSortedListIterator.preOrderTrav(BSTSortedListIterator.java:33)
at BSTSortedListIterator.preOrderTrav(BSTSortedListIterator.java:31)
at BSTSortedListIterator.<init>(BSTSortedListIterator.java:43)
at BSTSortedList.iterator(BSTSortedList.java:130)
at WebDictionary.main(WebDictionary.java:135)
答案 0 :(得分:2)
如果您确定这是您获得NullPointerException
的地方myStack.push(node);
正如你所提到的,有一张支票
if(node != null)
唯一可以为null的是 myStack 。否则这是不完整的信息。
Exception in thread "main" java.lang.NullPointerException
at BSTSortedListIterator.preOrderTrav(BSTSortedListIterator.java:33)
这是BSTSortedListIterator.java中的myStack.push(node);
行号33
答案 1 :(得分:1)
在大多数情况下myStack
实例为空,因为stack.push
即使在插入null元素的情况下也不会抛出错误。 Java
Stack
类使用Vector
(或特定数组)作为底层存储,在添加元素时将元素添加到其数组中:
elementData[elementCount++] = obj;
所以,我没有在那条线上看到NPE是应有的推动方法。
答案 2 :(得分:1)
您需要在main或其他地方初始化myStack对象,但在调用preOrderTrav(节点)之前。如果没有像
那样的行myStack = new Stack<K>()
然后很有可能,你忘记了这一点。
答案 3 :(得分:0)
我遇到了同样的问题,我使用了vkFlushMappedMemoryRanges
。
一开始,我将变量设置为TRANSFER
WORK that do not use the value transferred
BARRIER
USE DATAS
然后我得到JAVA 8
。
我通过设置变量来解决这个问题:
static Stack<Node> stack;