我正在尝试为双向链表实现一个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;
我不确定如何修复此问题,因为我的查找方法似乎正在起作用
答案 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;
}