为学校项目创建作业列表,但我遇到了NullPointerException

问题描述 投票:0回答:2

我不确定是否已经回答过这个问题,因为我在“类似问题”下没有看到它,但是在这里...对于一个学校项目,我们必须创建一个由Assignment和当我执行addAssignment(Assignment a)函数时,出现了NullPointerException。

在我们的项目中,Assignment包括作业名称Stringint代表获得的分数和给出的分数,double代表百分比等级和给定的字母等级为charNode包含一个名为“ assignment”,“ next”和“ prev” Assignment引用的NodeDList(我们的双向链接列表)在开始处由“ head”和“ tail” 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
    }
}
java eclipse doubly-linked-list
2个回答
0
投票

是否在其他情况下完成分配初始化?


0
投票

不幸的是,我们没有完整的代码,但是我怀疑,在您的类Node中,您有一个像这样的字段:

class Node{
    Assignment assignment;

如果是这种情况,这就是您的问题:您没有初始化赋值变量的任何值,因此它为Null。 Java不像C ++那样默认初始化。您将必须自己做,Node类的构造函数如下所示:

public Node() {
    assignment = new Assignment();
    assignment.setName("");
    assignment.setEarnedPts(0);
    assignment.setTotalPts(0);
    next = prev = null;
}

public Node(String name, int e, int t, Node n, Node p) {
    assignment = new Assignment();
    assignment.setName(name); // got an error here
    assignment.setEarnedPts(e);
    assignment.setTotalPts(t);
    assignment.setGrade();
    next = n;
    prev = p;
}
© www.soinside.com 2019 - 2024. All rights reserved.