使用链接列表的StudentDatabase

时间:2013-10-24 04:22:06

标签: java list linked-list

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

这是我的添加方法:

这是我的司机:

4 个答案:

答案 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<>方法的方法。