当前位置: 首页 > 知识库问答 >
问题:

尝试将addLast()添加到linkedlist时使用“java.lang.NullPointerException”

郗欣嘉
2023-03-14

我正在尝试在单链表的末尾插入一个新节点。但编译后我一直得到NullPointerException。

下面是Node类。

class Node {
    private int data;
    private Node next;

    public Node(int x){
        data = x;
        next = null;
    }
    public int getData(){
        return data;
    }
    public Node getNext(){
        return next;
    } 
    public void setData(int newx){
        data = newx;
    }
    public void setNext(Node n){
        next = n;
    }   
}

下面是单个LL类

public class SingleLL {
    protected Node head=null;
    protected Node tail=null;
    protected int size=0;

    public int getSize(){
        return size;
    }

    public void addLast(int x){
        Node newnode = new Node(x);
        if(size==0){
            head = newnode;
        }
        else{
            tail.setNext(newnode);
            tail = newnode;
        }
        size = size+1;
    }
    public void addfirst(int x){
        Node newnode = new Node(x);
        if(size==0){
            tail = newnode;
        }
        else{
            newnode.setNext(head);
            head = newnode;
        }
        size = size+1;
    }

方法addFirst()起作用。当我试图通过addLast()创建LL时,会出现NullPointerException。我认为if(size==0){head=newnode;}一定有问题,但我想不出来。

public static void main(String arg[]){
        int[] a = {1,2,3,4,5,6};
        SingleLL myList = new SingleLL();
        for(int i=0;i<a.length;i++){
            myList.addLast(a[i]);
        }
    }           
}

共有2个答案

云德辉
2023-03-14
// In your two add methods:
// addLast: because when size = 1, head equals tail
    if(size==0){
        head = newnode;
        tail = head;
    }
    // addFirst: because when size = 1, head equals tail
    if(size==0){
        tail = newnode;
        head = tail;
    }

请记住,NullPointException只会出现在“。就像tail.setNext();让我们看看,如果size=1,则调用AddLast。当前,head是您添加的newnode,但tail是null。所以当它使用tail.setNext()(实际上是null.setNext())时,将导致NullPointException。

牛骞仕
2023-03-14

addlastaddfirst中,当列表为空时,您需要初始化headtail。否则,一个或另一个将永远无法设置,并将导致NullPointerException

 类似资料:
  • 我正在尝试在单个链表的末尾插入一个新节点。但是我在编译后不断得到空点例外。 下面是节点类。 这里是单个LL类 addFirst()方法有效。当我试图通过addLast()创建一个LL时,出现了NullPointerException。我想< code > if(size = = 0){ head = new node;一定有什么问题;},但是我想不通。

  • 我尝试使用这个存储库https://github.com/ctongfei/progressbar为我的光线跟踪添加进度条。当我运行测试时,我得到很多异常。 我完全不知道它们是什么意思,也不知道如何开始修复它们。 我的测试代码: 我收到的错误消息: 2019年7月15日9:14:57PM org . jline . utils . log logr警告:无法检索哑色Java . io . io类型

  • 正如我所知,ArrayList以2^n+1的大小复制数组。而linkedlist只更改节点

  • 建造Gradle。应用程序部分。 项目部分。 我的文件中没有所有项目部分。这就是为什么我自己添加了这个地方。但是那些在所有项目中定义的 它必须成形。当我尝试引入google()和mavenCentral时,它给出了buildScript中已经定义的错误。当我试图只定义没有定义google()和mavenCentral;Build被配置为首选设置存储库而不是项目存储库,但存储库“maven”是由Bu

  • 每当用户在JOptionPane确认对话框的帮助下被询问是否将产品添加到购物车时选择“是”,我都会尝试将行添加到我的表中。我的代码如下: 然而,我得到了这个错误:线程“AWT-EventQueue-0”java.lang.ClassCastException:javax.swing中出现异常。JTable$1无法强制转换为javax.swing.table.DefaultTableModel 有人

  • 我有一个简单的Hello World示例,它将Map传递给Camel,并通过Log4J将值显示到控制台。我想通过将Jackson库添加到我的Camel应用程序Context.xml来扩展这个示例,以JSON格式呈现这个映射 首先,我尝试将以下XML标记添加到我的applicationContext.xml中(如http://camel.apache.org/json.html大学“在Spring