0

Я пытаюсь реализовать метод find для дважды связанного списка. Когда я запускаю тесты, я продолжаю получать исключение нулевого указателя в методе поиска.Null Pointer Exception, реализующий метод поиска для дважды связанного списка в 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 (пункт)) было бы повязку исправить, вы уверены, о значении 'Count' поддерживается правильно? –

+0

Где вы взяли переменную ** count ** и каково ее значение? –

+0

Я думаю, что проблема - это переменная count. Я все еще получаю ошибки даже после этого. – kevinsangabriel

ответ

0

Если ваша реализация связанногоList выполняется, позволяя вашим элементам быть null, то в вашем find() могут произойти оконечные устройства. Просто замените этот

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

с этим

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

Там нет никакой проверки в методе поиска, чтобы определить, есть ли какие-либо элементы в списке. Таким образом, вам нужно сначала проверить, что голова или переменная не равна нулю, прежде чем вводить цикл for. Или вы неправильно отслеживаете свой счет, как указал Джимми.

Лучшим решением было бы не зависеть от количества и проверить, что 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

Это сработало, моя переменная count определенно была проблемой, так как я столкнулся с проблемами теперь с другими тестами, которые включают size() – kevinsangabriel

+0

Отлично, не стесняйтесь проголосовать и пометить ответ как правильный. Удачи с проектом :) – pczeus