0

コード行を呼び出すときに発生するNullPointerExceptionを取り除くのに苦労してきました。

 if (priorityComparator.compare(temp.next.value, newNode.value) >= 0 )

完全なコードは次のとおりです。

 public class HeaderLinkedPriorityQueue<E> extends 
       AbstractPriorityQueue<E> implements PriorityQueue<E> {

  //Some other methods, constructors etc.

 public boolean add (E e) {

  ListNode<E> temp = highest;


  ListNode<E> newNode = new ListNode<E>(e, null);

  if (temp.next == null){
      //first node in a list.
      temp.next = newNode;
      objectCount++;
      return true;
  }

  //if the value of the first element following the header node is greater than the newNode add to back.
  if (priorityComparator.compare(temp.next.value, newNode.value) >= 0 ) {
      temp.next.next = newNode;
      objectCount++;
  }
  else {
      //add before the first node in the list. have temp.next point to newNode and have newNode point to the old temp.next.
      newNode.next = temp.next;
      temp.next = newNode;
      objectCount++; 
  }
  return true;
 }

 //class variables.
 private ListNode<E>           highest     = new ListNode(null, null); 
 private int                   objectCount = 0;
 private Comparator<? super E> priorityComparator;

パラメータに問題はないので、本当に困惑しています。どうすればこれを修正できますか?

4

1 に答える 1

5

PriorityComparator を初期化していないようです。

private Comparator<? super E> priorityComparator;

次のようなものでなければなりません

private Comparator<? super E> priorityComparator = new PriorityComparator();
于 2012-10-22T02:48:25.513 に答える