Java 试图传递参数并打印时出现空指针异常

Java 试图传递参数并打印时出现空指针异常,java,Java,我从main中的一个文件中读取,在main中我将记号存储为变量,然后将其传递给linkedList.insertNode(),然后将其传递给Node类并设置值,当我调用linkedList.printAll()时;从main我得到一个NULLPOINTEREXCEPTION,我不明白为什么。我不是在打印刻度值吗? 列表片段 class List{ private Node ptr; private int ticks; private int jobId; private String

我从main中的一个文件中读取,在main中我将记号存储为变量,然后将其传递给linkedList.insertNode(),然后将其传递给Node类并设置值,当我调用linkedList.printAll()时;从main我得到一个NULLPOINTEREXCEPTION,我不明白为什么。我不是在打印刻度值吗? 列表片段

class List{
 private Node ptr;
 private int ticks;
 private int jobId;
 private String name;

public List(){
 ptr = null;
 }

 public void insertNode(int t,int j, String name){

   Node node = new Node(t,j,name);
   if(ptr == null){
     node.next = node;
     node.prev = node;

   }//end if
public void printAll(){
   System.out.format("%d",ptr.getTicks());

 }
节点Spippet

class Node{
  private int ticks;
  private int jobId;
  private String name;
  Node next;
  Node prev;

  public Node(int t,int j, String name){
    this.ticks = t;
    this.jobId = j;
    this.name = name;
    setNext(null);
  }
主(代码段)


ptr
从未分配,因此它保持为空

因此
System.out.format(“%d”,ptr.getTicks())抛出
NullPointerException

您的
insertNode
代码毫无意义。您将创建一个指向自身的新节点,并且该节点从未连接到列表

可能应该是这样的:

 public void insertNode(int t,int j, String name){  
   Node node = new Node(t,j,name);
   if(ptr == null){
       ptr = node;
   } else {
     node.next = ptr;
     ptr.prev = node;
     ptr = node;
   }

您没有在
ptr
中辅助任何内容。我认为你需要这样做

   if(ptr == null){
         ptr = node;
   }else {
        //append this node to the ptr
        node.next = ptr; 
        ptr.prev = node;
        ptr = node;
   }

所以在这一点上我打印空。。。
   if(ptr == null){
         ptr = node;
   }else {
        //append this node to the ptr
        node.next = ptr; 
        ptr.prev = node;
        ptr = node;
   }