実現したいこと
空行のカウントをなくしたいです。
実行結果です。
aaa(単語):4(出現回数)回です。
bbb(単語):3(出現回数)回です。
ccc(単語):1(出現回数)回です。
(単語):2(出現回数)回です。
ddd(単語):2(出現回数)回です。
eee(単語):1(出現回数)回です。
前提
ここに質問の内容を詳しく書いてください。
文字列のカウントはできたのですが、空行もカウントされてしまいます。
発生している問題・エラーメッセージ
空行も文字列としてカウントされてしまう
該当のソースコード
import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import mypackage.TextWord; public class TextWordCounter { public static void main(String[] args) { // 単語登録クラスの配列6を作成 TextWord[] tw = new TextWord[6]; // それぞれにインスタンスを入れる for (int i = 0; i < tw.length; i++) tw[i] = new TextWord(); BufferedReader br = null; File file = null; // 行 String line; try { // インスタンス生成 file = new File("word.txt"); // インスタンス生成 br = new BufferedReader(new FileReader(file)); // 1行ずつ読み込みnullでなければループ while ((line = br.readLine()) != null) { for (int i = 0; i < tw.length; i++) { if (line == null) { break; } else if (line.equals(tw[i].getWord())) { tw[i].setCnt(); break; } else if (tw[i].getWord() == null) { tw[i].setWord(line); tw[i].setCnt(); break; } } } } catch (FileNotFoundException fnfe) { System.out.println("ファイルが存在しません"); } catch (IOException e) { System.out.println("ファイルが破損しています。"); } finally { try { //文字型入力ストリームを閉じる br.close(); } // ファイルがない状態で閉じる catch (NullPointerException npe) { System.out.println("ファイルがない状態で閉じようとしています"); } // その他 catch (IOException e){ System.out.println("閉じる作業に何らかの問題があります。"); } } for (int i = 0; i < tw.length ;i++) { System.out.println(tw[i].getWord() + "(単語):" + tw[i].getCnt() +"(出現回数)回です。"); } } } package mypackage; public class TextWord { // 単語 private String word = null; // 出現回数 private int cnt = 0; // getter メソッド public String getWord() { return this.word; } public int getCnt() { return this.cnt; } // setter メソッド public void setWord(String word) { this.word = word; } // 呼び出すと+1される public void setCnt() { this.cnt++; } }
試したこと
条件分岐でnullの場合、改行の場合\r\nでも振り落としてみたのですが、できませんでした。
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

0 コメント