我从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();
答案 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;
}