-1

** ユーザーからテキストを取得し、検索された単語に応じてテキスト内の単語数を検索したい。 BufferedReaderは、while行ですべての行を取得するようにreadLineメソッドを設定しますが、プログラムはnullポインタ例外エラー を返します。全文ファイルを文字列に変換してカウントする(nullpointerexceptionエラー)

私が1つのreadlineを使用したとき、プログラムは正常に機能しました。

私はこの問題は、whileループであるが、私は問題を理解していないと思います**


はパス書いてください:C:\ Users \ユーザーソウルコレクター\デスクトップ\ yazi大隈

をテキストの名前を書いてください:バッファ

テキストファイル:

はこんにちはこんにちは私の名前は

suatです

こんにちはそこ

ハロー

キーワード書く:スレッドに ハイテク

例外を "メイン" のjava.lang.NullPointerException

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

C:ソウルコレクター\ \ Users \ユーザー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

これは、単一のreadLine()で動作していたことはどういう意味ですか? whileループを使用しないという意味ですか? –

+0

はい、 br.readLine(); 私は1行を使用してプログラムを使用し、プログラムは動作します。 –

答えて

0

あなたはそれが上書き毎回だっ条件、そうしながら、内 'dizi' に値を代入しています。読みたいものがあれば、 'dizi'は値を持ち、whileループの内側に印刷されます。

「dizi」を読むのに他に何もない場合は、nullという値があります。したがって、後で 'dizi.toLowerCase()'を呼ぶと、NULLポインタの例外が発生します。

問題を解決するには、Listを使用してすべての読み取りディジを追跡するか、別のStringに追加する必要があります。

+0

私はこの問題を理解していますが、どのように修正するつもりですか? string []またはArrayListを使用してこの問題を解決できますか? –

+0

はい、これはその方法の1つになります。 –

関連する問題