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