尝试传递参数和打印时出现空指针异常

时间:2015-02-26 06:58:13

标签: java

我从main和main中的文件读取我将ticks作为变量存储然后我将它传递给linkedList.insertNode()然后它转到Node类并设置值,当我调用linkedList.printAll时( );从主要我得到一个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());

 }

Node 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);
  }

MAIN(片断)

  linkedList.insertNode(ticks,jobId,name);
     linkedList.printAll();

2 个答案:

答案 0 :(得分:1)

永远不会分配

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;
   }

答案 1 :(得分:1)

您未在ptr中分配任何内容。我认为你需要这样做

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