Я не уверен, был ли дан ответ на этот вопрос ранее, поскольку я не видел его в разделе Похожие вопросы, но здесь идет речь ... Для школьного проекта мы должны создать двусвязный список из Assignment
s. и когда я сделал свою функцию addAssignment(Assignment a)
, я получил исключение NullPointerException.
В нашем проекте Assignment
s состоит из String
для имени назначения, int
s для числа заработанные баллы и количество выданных баллов, double
для оценки в процентах и char
для данной оценки. Node
s содержат Assignment
, называемые ссылками "assignment" и "next" и "prev" Node
. DList
(наш двусвязный список) состоит из "головы" и "хвоста" Node
в начале.
Данный код включен ниже. Я включил комментарии, подробно описывающие, где моя консоль выдала мне сообщения об ошибках.
В классе 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
}
}