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