0

问题是实现一个 StudentDatabase 类,该类用一个链表实现 OrderedList。学生数据库包含每个学生的姓名、学生 ID 和年份。您应该包括一个显示类,该类按学生编号顺序打印数据库中的学生。这是我的学生课:

这是我的添加方法:

这也是我的司机:

4

4 回答 4

4

您没有正确处理空列表的情况。在这种情况下,current = headis already null,当您尝试查看( ) 节点的next字段时,您会得到一个 NPE。null如果是,您需要检查是否head == null并在列表的前面插入新项目。

此外,您的add方法在逻辑上是错误的;它总是在列表的末尾插入一个项目。您需要在将项目插入正确位置时进行比较。

于 2013-10-24T04:38:15.057 回答
0

您获得 NPE 的原因是headto begin with 的值是null。您需要更改您的代码以检查是否是这种情况。

像这样的东西:

// method declaration

LinearNode newItems = new LinearNode(head, items);
if (head == null) {
    head = newItems;
    return;
}

...
// the rest of the method
于 2013-10-24T04:41:05.400 回答
0

发布您的日志以了解您在哪里得到 NullPointerException,可能在 while 循环检查而不是 current.getNext(),尝试 current!=null,如下所示,

while(current!= null){
        current = current.getNext();
        current.setNext(newItems);
}
于 2013-10-24T04:31:23.783 回答
0

chrylis 是对的,它与 head 可能为空有关。您说问题出在第 70 行,这涉及到current.setPrev(newItems);我认为您需要同时检查 head 是否为空,setPrev()如下add()所示:

if (head==null){
head=newItems;
return;
}

add()return也是一个好主意,true因为这就是 javaadd()在它的一些其他列表中实现一些其他方法的方式,例如ArrayList<>.

于 2013-10-24T04:46:43.613 回答