-3

頭のてっぺんから私のコードに何か問題があると思いますか?

/** 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が発生しています。私のコードに明らかに問題がある場合は、助けてください。

4

2 に答える 2

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まだ null です。何かに設定する前に NullPointerException がスローされています。head

head が null の場合、間違いなく head.previous を実行したくありません

于 2012-10-27T00:35:13.053 に答える
1

これ以上の情報がなければ、headおそらく null であると推測する必要があります。

于 2012-10-27T00:22:05.463 に答える