2013-04-25 64 views
1

我不知道为什么我无法做一些简单的操作,只需将泛型类型的对象推入堆栈即可。我决定我需要一些帮助来解决这个问题。这是我有:为什么我不能推入堆栈? Java 6泛型

public BSTSortedListIterator(BSTnode<K> root) { 
    preOrderTrav(root); 
} 

任何人有任何的想法:

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

       } 

      } 
       } 

这正从我的构造函数叫什么名字?我得到这个错误,顺便说一句:

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) 
+3

你有没有初始化myStack:

我通过设置像变量解决这个问题?从你发布的代码不清楚。 – 2013-04-25 08:21:51

+0

看起来像你'myStack'实例可能为空 – harsh 2013-04-25 08:22:43

回答

2

如果您确定这就是你所得到的NullPointerException

myStack.push(node); 

,正如你刚才所说,有一个检查

if(node != null) 

唯一可以为空的东西是myStack。否则这是不完整的信息。

Exception in thread "main" java.lang.NullPointerException 
    at BSTSortedListIterator.preOrderTrav(BSTSortedListIterator.java:33) 

这是myStack.push(node);行数33 BSTSortedListIterator.java

1

在大多数概率myStack实例为null,为stack.push甚至不会在被插入null元素的情况下抛出错误。 JavaStack类使用Vector(或阵列具体),其添加元素添加元素进入其阵列底层存储:

elementData[elementCount++] = obj; 

所以,我并不在该行NPE是由于推法看到。

1

您需要在主或其他地方初始化myStack对象,但在任何调用preOrderTrav(节点)之前。如果没有任何线如

myStack = new Stack<K>() 

那么机会是,你忘了这一点。

0

我得到了同样的问题,我用JAVA 8

在开始的时候,我在我的变量设置为static Stack<Node> stack;

然后我null pointer

static Stack<Node> stack= new Stack<Node>(); 
相关问题