【发布时间】:2020-02-09 20:56:44
【问题描述】:
我不确定之前是否已经回答过这个问题,因为我没有在“类似问题”下看到它,但这里是……对于学校项目,我们必须创建一个 Assignments 的双向链接列表当我创建 addAssignment(Assignment a) 函数时,我得到了 NullPointerException。
在我们的项目中,Assignments 包含一个 String 代表作业的名称,ints 代表获得的分数和给出的分数,double 代表百分比等级和char 表示给定的字母等级。 Nodes 包含一个名为“assignment”的Assignment 以及“next”和“prev”Node 引用。 DList(我们的双向链表)在开头由 Node 的“头”和“尾”组成。
有问题的代码包含在下面。我已经包含了 cmets,详细说明了我的控制台在哪里给了我错误消息。
在课堂Assignment:
/**
* setter
* @param n = the name of the assignment
*/
public void setName(String n) {
name = n;
}
在课堂Node:
/**
* default constructor
*/
public Node() {
assignment.setName("");
assignment.setEarnedPts(0);
assignment.setTotalPts(0);
next = prev = null;
}
/**
* n-argument constructor
* @param a = assignment
* @param e = # of earned points
* @param t = # of total possible points
* @param n = "next" node
* @param p = "previous" node
*/
public Node(String name, int e, int t, Node n, Node p) {
assignment.setName(name); // got an error here
assignment.setEarnedPts(e);
assignment.setTotalPts(t);
assignment.setGrade();
next = n;
prev = p;
}
最后,上课DList:
/**
* adds an assignment to the list
* @param a = the assignment
*/
public void addAssignment(Assignment a) {
// check to see if this is the first node in the list
Node temp = new Node(a.getName(), a.getEarnedPts(), a.getTotalPts(), tail, head); // got an error here
if (head == tail) {
head = temp;
}
else { // there are other node(s) in the list
Node p = head;
Node q = new Node();
while (p.getNext() != null) {
q = p; // set q equal to p, so that q will equal previous node
p = p.getNext(); // advance p by one node
}
p.setNext(temp);
p.setPrev(q); // ??? ask about this in class later
}
}
【问题讨论】:
-
您在 Node 类中遇到问题,因为您试图调用不存在的对象上的方法。我认为您忘记在该类中创建分配对象。
标签: java eclipse doubly-linked-list