Node类的removeDup()中的NullPointerException

时间:2019-06-27 08:15:42

标签: java nullpointerexception nodes

我正在编写一种方法来删除重复的Node,但是它一直在行:while(m.next!= null)处获取NullPointerException。

public class Node {

    public int data;
    public Node next;

    public Node (int data) {
        this.data = data;
        this.next = null;
    }

    public void removeDup () {

        Node n = this;
        while (n != null) {
            Node m = n;

            while (m.next != null) {
                if (n.data == m.next.data) 
                    m.next = m.next.next;
                m = m.next;
            }

            n = n.next;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

请考虑以下3个循环步骤:

    while (m.next != null) { // 3. now in the next iteration, m == null, so you get 
                             //    NullPointerException
        if (n.data == m.next.data) 
            m.next = m.next.next; // 1. if m.next.next == null, you assign m.next = null
        m = m.next; // 2. then you assign m = null
    }

答案 1 :(得分:0)

能否请您分享完整的代码?

看起来'n'尚未被实例化,因此当您将其分配给'm'时,它仍然为NULL,因此是异常。