我的Java代码中出现NullPointerException错误。

时间:2012-10-27 00:18:52

标签: java compilation nullpointerexception runtime circular-list

你们看到我的代码出了什么问题:

/** simulates the Josephus game by killing every other person
     until the winner is the only one left.
     @return The survivor of the game
   */
 public E startJosephus() {
     E item =head.data;
     if(head.next != null){
         if(head == head.previous)
             return item;
     }
     else{
         while(count>1){
             removeAfter(head);
             head =head.next;
         }
 }
     return item;



     }

以下是我的完整代码:http://pastebin.com/S0kWwFFV

这也是我的驱动程序类:http://pastebin.com/Nb08Dtqk

我得到的NullPointerExceptions似乎源于此方法。如果您发现我的代码有任何明显错误,请提供帮助。

3 个答案:

答案 0 :(得分:3)

我没有读完你的所有代码,但我发现了这个:

 public void addFirst(E dataItem) {
                 Node<E> node = new Node <E>(dataItem, null, null);
                 // To be completed by the student

                 if (head == null) // list is empty
                      head = head.previous = node;

             else {
                node.next = head;
                head.previous = node;
                head = node;
             }
             count++;
     }

可能的罪魁祸首,

 if (head == null) // list is empty
           head = head.previous = node;

在此声明中,head.previous = node;首先完成,但head仍然为空。在将 head设置为任何内容之前, 将抛出NullPointerException。

如果head为null,你肯定不想做head.previous

答案 1 :(得分:2)

来自您的构造函数:head = null;

变量head 永远不会被初始化

答案 2 :(得分:1)

如果没有更多信息,我必须猜测head可能为空。