Sorted Linked List提供NullPointerExeption

时间:2018-03-23 23:45:48

标签: java linked-list singly-linked-list

我正在创建一个排序链接列表,其中整数按升序存储。我在使用add()方法时遇到了麻烦。它在我添加第一个节点时起作用,但是当我尝试添加另一个节点时它会给我NullPointerException

这是我的Node类代码:

  public class SortedList {

    Node head;
    public int listCount;


    public SortedList() {
      listCount = 0;
      this.head=null;
    }

    public void add(int num) {
      Node newNode = new Node(num);
      Node temp = head;

      if (head == null) {
        head = newNode;
        listCount++;
        System.out.println("Node with data "+num+" was added.");
       } else {
        while (temp.value <= num) {    //the compiler shows NullPointerException here in this line 
            temp = temp.next;
        }
          if (temp.next==null) {
            temp.next=newNode;
            listCount++;
            System.out.println("Node with data "+num+" was added.");
        } else {
            newNode.next=temp.next.next;
            temp.next=newNode;
            listCount++;
            System.out.println("Node with data "+num+" was added.");
        }


    }

}

这是我的SortedList类的一部分:

switch

它表示java.lang.NullPointerException位于“while(temp.value&lt; = num)”行

1 个答案:

答案 0 :(得分:0)

考虑你的程序的这些行:

value

每次循环播放时,都会访问num以检索其next,如果该值小于或等于temp.next,则转到null 1}} node。

但是,此代码中没有任何内容可以处理当您点击&#34; end&#34;您的排序列表(因此nulltemp)。发生这种情况时,temp.value被分配给temp,然后再次检查循环条件,while (temp.value <= num && temp.next != null) 抛出NullPointerException。

你究竟如何解决这个问题有点偏好。可能你想在{{1}}保持列表尾部时停止。所以也许你可以把循环条件改为

{{1}}