整个文本文件到字符串和计数(nullpointerexception错误)

时间:2017-05-18 09:48:36

标签: java while-loop nullpointerexception java.util.scanner bufferedreader

** 我想从用户那里获取文本,并根据搜索的单词找到文本中的单词数。 BufferedReader将readLine方法设置为使用while获取所有行,但程序会给出空指针异常错误

当我使用单个readline时,该程序运行良好。

我认为问题出在while循环中,但我不明白这个问题。**

请写路径:C:\ Users \ Soul Collector \ Desktop \ yazi okuma

请写下文字名称:缓冲区

文字档案:

你好,我的名字是suat

你好

你好

写下关键词: 喜

线程“main”中的异常java.lang.NullPointerException

at project2.Count.SingleWord(Count.java:83)
at project2.Project2.main(Project2.java:45)

C:\ Users \ Soul Collector \ AppData \ Local \ NetBeans \ Cache \ 8.2 \ executor-snippets \ run.xml:53:Java返回:1

BUILD FAILED(总时间:18秒)

        if(press == 2 )
           {

        System.out.print("Please Write Path : ");
        scan.nextLine();
        path = scan.nextLine();

        System.out.print("Please Write the Name of Text : ");
        txtname = "\\"+ scan.nextLine() + ".txt";

        finalpath = path + txtname;

        File dosya = new File(finalpath);
        FileReader fr = new FileReader(dosya);
        BufferedReader br = new BufferedReader(fr);
        String dizi;
        while((dizi = br.readLine()) != null){
            System.out.println(dizi);

        }
           br.close();



       /* StringTokenizer st = new StringTokenizer(dizi);

        while(st.hasMoreTokens()){
        System.out.println(st.nextToken());



    }*/ 

        String search=null;
        System.out.println("Write the key word : ");
       search = scan.nextLine();

        Scanner s = new Scanner(dizi.toLowerCase());
        while (s.hasNext()) {
       toplamkelime++;
           if (s.next().equals(search))
               kelime ++;
                  }
        System.out.println("Key Word : " + search);
        System.out.println("Count of key word : " + kelime);
        System.out.println("\n\n\n Total Count of Words : " + toplamkelime );



    }

1 个答案:

答案 0 :(得分:0)

您正在为' dizi'分配价值。在条件限制的情况下,每次都被覆盖。当有东西要读,' dizi'有一个值并在while循环中打印。

什么都不读,“dizi'然后具有 null 值。所以当你打电话给'dizi.toLowerCase()'以后下线,你得到空指针异常。

要解决此问题,您需要使用List跟踪所有读取的dizi,或将它们附加到另一个String。