0

雙向鏈表我試圖實施雙向鏈表一個查找方法查找方法。當我運行測試時,我一直在我的find方法中得到一個空指針異常。空指針異常實現在Java

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

如果(!curr.item = NULL && curr.item.equals(項目))將是繃帶固定,你確定 '計數' 值被正確的維護? –

+0

你從哪裏得到** count **變量,它的值是多少? –

+0

我認爲問題是計數變量。即使這樣做,我仍然會遇到錯誤。 – kevinsangabriel

回答

0

如果您的LinkedList的實現是通過允許您的項目是null做了,那麼nullPointers可以在你的find()發生。只需更換這

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

與此

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

還有就是在你的查找方法沒有檢查,以確定是否有您的列表中的任何元素。因此,在進入for循環之前,您需要首先檢查head或curr是否爲空。或者,Jimmy指出你沒有正確地跟蹤你的計數。

一個更好的解決辦法是不依賴於數量和檢查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; 
} 
+0

這個工作,我的計數變量肯定是因爲我遇到了問題,現在與其中涉及大小() – kevinsangabriel

+0

大,隨意贊成票和標記答案正確其他測試問題。祝你的項目好運:) – pczeus