Java 当尝试插入最大值时,有序链表提供空指针

Java 当尝试插入最大值时,有序链表提供空指针,java,Java,这是一个用于有序链接列表的插入方法,最小的整数指向头部。在我尝试插入一个比我第一次添加的值更大的值之前,这个方法一切都很顺利。当我尝试添加一个新的更大的值时,它会给出一个空指针异常,这是它唯一一次给出它。当我检查它时,我觉得我的逻辑很好,有人有什么想法吗?你应该改变里面条件的顺序 public void insert(int data) { Node newNode = new Node(data); Node current =

这是一个用于有序链接列表的插入方法,最小的整数指向头部。在我尝试插入一个比我第一次添加的值更大的值之前,这个方法一切都很顺利。当我尝试添加一个新的更大的值时,它会给出一个空指针异常,这是它唯一一次给出它。当我检查它时,我觉得我的逻辑很好,有人有什么想法吗?

你应该改变里面条件的顺序

 public void insert(int data)
        {
            Node newNode = new Node(data);
            Node current = head;
            Node prev = null;

            if(head == null)
            {
                head = newNode;
            }
            else
            {   
                while(data > current.data && current != null)
                {
                    prev = current;
                    current = current.next;
                }

                if(prev == null)
                {
                    newNode.next = current;
                    head = newNode;
                }
                else
                {
                    prev.next = newNode;
                    newNode.next = current;
                }
            }
应该如此

while(data > current.data && current != null)
这是因为Java&&operator从左边开始检查,所以无论current是否为null,它都会尝试调用此上的数据

当我检查它时,我觉得我的逻辑很好,有人有什么想法吗?-很明显,你知道你的逻辑不好,否则你就不会有这个问题。如果这是我的代码和问题,我会使用IDE的调试器,通过调试器运行代码,检查字段,找到错误,然后解决它。
while(current != null && data > current.data)