问题是实现一个带有链表的OrderedList的StudentDatabase类。学生数据库包含每个学生的姓名、学生 ID 和年份。您应该包括一个显示类,该显示类按学生编号顺序打印数据库中的学生。这是我的学生班:
这是我的添加方法:
这也是我的驱动程序:
您没有正确处理空列表的情况。在这种情况下,current = head
已经null
,当你尝试查看(null
)节点的next
字段时,你会得到一个NPE。您需要检查是否head == null
,如果是,请在列表前面插入新项目。
此外,您的add
方法在逻辑上存在错误;它总是在列表的末尾插入一个项目。您需要在将项目插入正确的位置时进行比较。
发布你的日志以了解你在哪里得到 NullPointerException,可能在 while 循环检查而不是 current.getNext(),尝试当前!=null 如下所示,
while(current!= null){
current = current.getNext();
current.setNext(newItems);
}
您获得 NPE 的原因是head
的值是 null
。您需要更改代码以在那里进行检查以查看是否是这种情况。
像这样:
// method declaration
LinearNode newItems = new LinearNode(head, items);
if (head == null) {
head = newItems;
return;
}
...
// the rest of the method
> chrylis 是对的,这与 head 可能为空有关。您说问题出在第 70 行,这涉及current.setPrev(newItems);
我认为您需要实现头部在 setPrev()
中为空的检查,并像这样add()
:
if (head==null){
head=newItems;
return;
}
让 add()
返回true
也是一个好主意,因为这就是 java 在其其他一些列表中实现其他一些add()
方法的方式,例如 ArrayList<>
。