Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 双链表空指针异常_Java_Linked List - Fatal编程技术网

Java 双链表空指针异常

Java 双链表空指针异常,java,linked-list,Java,Linked List,我正在尝试为双链接列表使用一个remove函数,但是我一直在current.prev.next=current.next上得到一个空指针异常零件。我不认为我真的理解空指针异常是什么,因为我不知道如何修复它。log函数只是我编写以写入输出文件的函数,retval[1]是我正在搜索以删除的元素 Node current = head; while(current != null) { if((current.data).compareTo(retval[1]

我正在尝试为双链接列表使用一个remove函数,但是我一直在
current.prev.next=current.next上得到一个空指针异常零件。我不认为我真的理解空指针异常是什么,因为我不知道如何修复它。log函数只是我编写以写入输出文件的函数,retval[1]是我正在搜索以删除的元素

Node current = head;

    while(current != null)
    {
            if((current.data).compareTo(retval[1]) == 0)
            {
                    if(current.prev == null)
                        head = current.next;

                    if(current.next == null)
                        tail = current.prev;

                    current.prev.next = current.next;
                    current.next.prev = current.prev;

                    current = null;

                    valid++;
                    log(line + "\n" + "Sucsessfully Removed \n");

            }
            else
            {
                log(line + "\n" + InvalidTransaction + " - Element does not exist \n");     
            }

            current = current.next;
        }

我肯定这很愚蠢,但我不知道是什么。任何帮助都将不胜感激。

A
NullPointerException
表示您试图对
null
的对象执行某些操作。既然
current
肯定不是
null
,那么
current.prev
一定是
null
。从那里开始。

只需更换

current.prev.next = current.next;
current.next.prev = current.prev;

而且,一旦找到元素,就需要中断循环

if(null != current.prev) current.prev.next = current.next;
if(null != current.next) current.next.prev = current.prev;