Null指针异常在Java中实现双向链表的查找方法

时间:2016-02-13 17:17:53

标签: java arrays linked-list singly-linked-list doubly-linked-list

我正在尝试为双向链表实现一个find方法。当我运行测试时,我一直在我的find方法上得到一个空指针异常。

    public int find(Medication item) {
    MedicationNode curr = head;
    for (int k = 0; k < count; k++) {
        if (curr.item.equals(item)){         //error occurs on this line
            return k;
        }
        curr = curr.next;
    }
    return -1;
}

我得到空指针异常的测试部分在这里

        list.remove(m4);
    if (list.find(m4) != -1) {                  //error occurs on this line
        System.out.println("FAILURE");
        return;

我不确定如何修复此问题,因为我的查找方法似乎正在起作用

2 个答案:

答案 0 :(得分:0)

如果通过允许您的项目为null来完成您的linkList实施,那么您的find()可能会发生nullPointers。只需更换此

即可
if (curr.item.equals(item)){ 

用这个

if (curr.item != null && curr.item.equals(item)){ 

答案 1 :(得分:0)

您的查找方法中没有检查以确定列表中是否有任何元素。因此,在进入for循环之前,您需要首先检查head或curr是否为null。或者,你没有正确跟踪吉米指出的数量。

更好的解决方案是不依赖于计数并检查curr.next是否为空。类似的东西:

public int find(Medication item) {
    MedicationNode curr = head;
    while(curr != null){
        if (curr.item != null && curr.item.equals(item)){ 
            return k;
        }
        curr = curr.next;
    }
    return -1;
}