NullPointException при пользовательском поиске, когда запрос не дает результата - PullRequest
0 голосов
/ 10 декабря 2018

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

Я получаю исключение в потоке "main" java.lang.NullPointerException в строке 56, которая является первым IF внутри цикла FOR.Это происходит только в том случае, если поиск ничего не находит.Все остальное вроде бы работает нормально.

Заранее спасибо всем, кто попробует.

else if ( menuSelect == 3)
        {
            do
            {
                Display.search(fullLine);
                continueSearch = 1;
                search = input.nextLine();
                if (search.length() == 10 && search.matches(regex))
                {
                    search = search.replaceFirst("(\\d{3})(\\d{3})(\\d+)", "($1) $2-$3"); // format phone number
                } // end IF search match regex (phone format)

                for (int index = 0; index < MAX && continueSearch == 1; index++)
                {
                    if (leadArray[index].getName().equalsIgnoreCase(search)
                            || leadArray[index].getAddress().equalsIgnoreCase(search) 
                            || leadArray[index].getPhone().equalsIgnoreCase(search) 
                            || leadArray[index].getEmail().equalsIgnoreCase(search))
                    {

                        Pages.viewLead(listSize, noteListSize, index, noteArray, leadArray);
                        menuSelect = 0;
                        continueSearch = 0;
                    } // end IF search matches data params
                    else if (leadArray[index].getName().contains(search) 
                            || leadArray[index].getAddress().contains(search) 
                            || leadArray[index].getPhone().contains(search) 
                            || leadArray[index].getEmail().contains(search))
                    {                   
                        Pages.searchAllLeads(listSize, noteListSize, search, noteArray, leadArray);
                        menuSelect = 0;
                        continueSearch = 0;
                    } // end IF search contains data params 
                    else if (search.equals("00"))
                    {
                        continueSearch = 0;
                        Pages.mainMenu(listSize, noteListSize, noteArray, leadArray);
                    } // end IF exit search 00              
                } // end FOR array Loop
                System.out.println("\nYour search returned (0) results.\n");
            } while (!"00".equals(search) ); // end search loop
            Pages.mainMenu(listSize, noteListSize, noteArray, leadArray);
        } // end IF menuSelect 3 (search)

1 Ответ

0 голосов
/ 10 декабря 2018
В цикле

FOR использовалась константа MAX, а не переменная listSize.Ребята, вы ничего не могли знать без полного кода.Я также обновил логическое значение для continueSearch (спасибо @Ken YN).

else if ( menuSelect == 3)
        {
            do
            {
                Display.search(fullLine);
                continueSearch = true;
                search = input.nextLine();
                if (search.length() == 10 && search.matches(regex))
                {
                    search = search.replaceFirst("(\\d{3})(\\d{3})(\\d+)", "($1) $2-$3"); // format phone number
                } // end IF search match regex (phone format)

                for (int index = 0; index < listSize && continueSearch == true; index++)
                {
                    if (leadArray[index].getName().equalsIgnoreCase(search)
                            || leadArray[index].getAddress().equalsIgnoreCase(search) 
                            || leadArray[index].getPhone().equalsIgnoreCase(search) 
                            || leadArray[index].getEmail().equalsIgnoreCase(search))
                    {

                        Pages.viewLead(listSize, noteListSize, index, noteArray, leadArray);
                        menuSelect = 0;
                        continueSearch = false;
                    } // end IF search matches data params
                    else if (leadArray[index].getName().contains(search) 
                            || leadArray[index].getAddress().contains(search) 
                            || leadArray[index].getPhone().contains(search) 
                            || leadArray[index].getEmail().contains(search))
                    {                   
                        Pages.searchAllLeads(listSize, noteListSize, search, noteArray, leadArray);
                        menuSelect = 0;
                        continueSearch = false;
                    } // end IF search contains data params 
                    else if (search.equals("00"))
                    {
                        continueSearch = false;
                        Pages.mainMenu(listSize, noteListSize, noteArray, leadArray);
                    } // end IF exit search 00              
                } // end FOR array Loop
                System.out.println("\nYour search returned (0) results.\n");
            } while (!"00".equals(search) ); // end search loop
            Pages.mainMenu(listSize, noteListSize, noteArray, leadArray);
        } // end IF menuSelect 3 (search)
...