Метод поиска по двусвязному списку - PullRequest
2 голосов
/ 05 марта 2012

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

    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();
        }
    }
}

1 Ответ

2 голосов
/ 05 марта 2012

У меня нет числа ваших строк, поэтому я думаю, что здесь вслепую, но я собираюсь предположить, что эта строка - ваша проблема:

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)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...