首页 文章

查询不产生结果时自定义构建搜索的NullPointException

提问于
浏览
0

我正在 Build 一个学校项目的搜索,我整天都被困在这里 . 我已经尝试了所有我能想到的东西 . 我必须在某个地方遗漏一些简单的东西,不知道在这一点上是什么 .

我在第56行的线程"main" java.lang.NullPointerException中获得了Exception,这是FOR循环中的第一个IF . 只有在搜索找不到任何内容时才会发生这种情况 . 其他一切似乎都很好 .

提前感谢任何给予此人的人 .

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

    FOR循环使用MAX常量而不是listSize变量 . 没有完整的代码,没有人能够知道 . 我还更新为boolean for continueSearch(感谢@Ken Y-N) .

    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)
    

相关问题