【问题标题】:Nullpointer exception in my LinkedList我的链接列表中的 Nullpointerexception
【发布时间】:2015-03-30 12:49:33
【问题描述】:

我有一个 List 类,其中有这个插入函数。该列表正在对列表中的数字进行递减排序。当我插入以下语句Ape ={ 1, 2, 3, 4, 2, 3, 4, 5, 3, 4, 6 } 时,我得到一个空指针异常。

public List<E> insert (E d){
    Node<E> newNode= new Node<E>(d);
    if(isEmpty()){
        current=first=last=newNode;
        numberOfNodes++;
        return this;
    }

    if(newNode.data.compareTo(first.data)>0){
        first.prior=newNode;
        newNode.next=first;
        first= current = newNode;
        numberOfNodes++;
        return this;
    }

    setFirst();
    while(current.next != null && newNode.data.compareTo(current.data)<0){
        current=current.next;
    }
    if(current.next==null){
        current.next=newNode;
        newNode.prior=current;
        last=current=newNode;
        numberOfNodes++;
        return this;
    }
    else{
        current.prior.next=newNode;
        newNode.prior=current.prior;
        newNode.next=current;
        current.prior=newNode;
        current=newNode;
        numberOfNodes++;
        return this;
    }
}

我在 current.prior.next=newNode 处遇到空指针异常;

有人可以帮我解决这个问题吗?

非常感谢!

【问题讨论】:

  • 是的,currentcurrent.prior 为空。你调试告诉你什么?
  • current.prior 不为空,是 current.prior.next 导致了问题!
  • 如果您想帮助我们帮助您,请准备一个可运行的示例来演示该问题。
  • 我该怎么做?对不起,我是 StackOverflow 的新手:S
  • 包含一个 main 方法,这样我们就可以简单地复制粘贴您的代码来重现问题。

标签: java list exception insert nullpointerexception


【解决方案1】:

如果 current 为 null,则为 null 的元素实际上必须是 current.prior,您将在前面的 if 处有一个 nullpointer。 这意味着您正在查看的节点没有先前的节点。 当您单步执行代码时,这一点会变得很明显。

还有:

  • Java 中其实有一个 LinkedList 类,为什么不用它
    而是?
  • 请不要做像current=first=last=newNode;这样的链式作业
  • 您真的需要所有这些字段都成为成员字段吗?
  • 添加一些JavaDoc或将此方法划分为子方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 2019-11-22
    • 2014-03-02
    • 2017-06-10
    相关资源
    最近更新 更多