2012-03-04 3 views
2

Работа над методом поиска для моего дважды связанного списка. Я получаю исключения, но я не могу показаться, чтобы выяснить, как пройти по списку, не получая их ..Метод поиска двойного связного списка

public void searchEntryNode() { 
    System.out.println("I'll search through each entry to pull up what you're looking for "); 
    System.out.println("Type in what you want "); 
    String searchEntry = keyboard.next(); 

    EntryNode n = head; 
    while (head != null) { 
     if (head.getFirstName().contains(searchEntry) || head.getLastName().contains(searchEntry) || head.getPhoneNum().contains(searchEntry) || head.getEmail().contains(searchEntry)) { 
      System.out.println("Found a matching entry"); 
      System.out.println(n.getFirstName() + " " + n.getLastName() + " " + n.getEmail() + " " + n.getPhoneNum()); 
     } 

     if (head.getNext() != null) { 
      head = head.getNext(); 
     } 
     else { 
       System.out.println("That's all we found "); 
       System.out.println(); 
       menu(); 
     } 
    } 
} 
+0

Какие исключения? Где? –

+0

Зачем вы получаете? – jmishra

+0

я получаю исключения нулевого указателя: Исключение в потоке "главный" java.lang.NullPointerException \t в AddressList.searchEntryNode (AddressList.java:87) \t в AddressList.menu (AddressList.java:160) \t в AddressList. addEntryNode (AddressList.java:48) \t на AddressList.menu (AddressList.java:156) \t на AddressList.addEntryNode (AddressList.java:48) \t на AddressList.menu (AddressList.java:156) \t на AddressList.addEntryNode (AddressList.java:48) \t at AddressList.menu (AddressList.java:156) \t at AddressDriver.createList (AddressDriver.java:14) \t at AddressDriver.main (AddressDriver.java:9) – jackie

ответ

2

Я не ваш подсчет строк, поэтому я предполагаю, что слепо, но я собираюсь догадаться, что эта линия является ваша проблема:

if (head.getFirstName().contains(searchEntry) || head.getLastName().contains(searchEntry) || head.getPhoneNum().contains(searchEntry) || head.getEmail().contains(searchEntry)) 

это вероятность того, что один из ваших записей возвращает null либо для getFirstName, getLastName, getPhoneNum или getEmail.

Вы должны проверить каждый не null перед тем разыменования (вы не можете сделать null.someMethod())

Один из способов сделать это:

string firstName = head.getFirstName(); 
string lastName = head.getLastName(); 
string phoneNum = head.getPhoneNum(); 
string email = head.getEmail(); 

if ((firstName != null && firstName.contains(searchEntry)) 
    || (lastName != null && lastName.contains(searchEntry)) 
    || (phoneNum != null && phoneNum.contains(searchEntry)) 
    || (email != null && email.contains(searchEntry))) 
+0

Получил это, проверяя, что вначале работает что-то не пустое. Благодаря! – jackie

Смежные вопросы