gpt4 book ai didi

java - 为学校项目创建作业列表,但我收到 NullPointerException

转载 作者:行者123 更新时间:2023-12-01 18:32:12 25 4
gpt4 key购买 nike

我不确定之前是否已经回答过这个问题,因为我没有在“类似问题”下看到它,但这里是......对于一个学校项目,我们必须创建一个作业的双向链接列表 当我创建 addAssignment(Assignment a) 函数时,我得到了一个 NullPointerException。

在我们的项目中,Assignment 由一个表示作业名称的 String、表示获得的分数的 int 和给定的分数,double 表示百分比等级,char 表示给定的字母等级。 Node 包含一个称为“赋值”的 Assignment 以及“下一个”和“上一个”Node 引用。 DList(我们的双向链表)在开头由“头”和“尾”Node 组成。

下面包含有问题的代码。我添加了注释,详细说明了我的控制台在何处向我提供了错误消息。

在类作业中:

/**
* setter
* @param n = the name of the assignment
*/
public void setName(String n) {
name = n;
}

在类节点中:

/**
* 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 类中,您有一个如下所示的字段:

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

关于java - 为学校项目创建作业列表,但我收到 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60141240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com