【Java】文字列内の単語の出現回数をカウントする
はじめに | ステップ1: 入力文字列の準備 | ステップ2: 文字列の分割 | ステップ3: 出現回数のカウント | ステップ4: 結果の表示 | 実際の例
はじめに
Javaを使って、文字列内の単語が何回出現するかをカウントするプログラムを作成する方法を解説します。このプログラムは、ユーザーが入力した文字列を解析し、各単語の出現回数を集計します。最も基本的な方法は、文字列を分割して、各単語の出現回数をカウントすることです。
ステップ1: 入力文字列の準備
プログラムの最初のステップは、処理する文字列を用意することです。文字列は、ユーザーからの入力として受け取ることができますが、ここでは簡単のためにハードコーディングした文字列を使用します。
String text = "Javaはプログラミング言語です。Javaはオープンソースです。";
この文字列には「Java」が2回出現し、「プログラミング言語」や「オープンソース」など他の単語も含まれています。
ステップ2: 文字列の分割
次に、文字列を単語ごとに分割します。分割するためには、Javaのsplit()
メソッドを使用します。このメソッドは、指定した区切り文字で文字列を分割し、配列として返します。今回はスペースや句読点を区切り文字と考えて単語ごとに分けます。
String[] words = text.split("[\\s,\\.]+"); // スペースや句読点で分割
このコードでは、正規表現を使ってスペース(\\s)やカンマ、ピリオドなどの句読点で文字列を分割しています。結果的に、単語の配列words
が得られます。
ステップ3: 出現回数のカウント
次に、各単語の出現回数をカウントします。HashMap
を使って、単語をキーとしてその出現回数を値として格納するのが一般的です。これにより、各単語が何回出現したかを簡単に確認できます。
import java.util.HashMap; HashMapwordCount = new HashMap<>(); for (String word : words) { word = word.toLowerCase(); // 大文字小文字の違いを無視 wordCount.put(word, wordCount.getOrDefault(word, 0) + 1); }
ここでは、各単語を小文字に変換して大文字と小文字の違いを無視しています。getOrDefault()
メソッドを使って、単語がまだマップに存在しない場合は初期値0からカウントを始めます。
ステップ4: 結果の表示
最後に、単語の出現回数をコンソールに表示します。wordCount
の中身をループで取り出し、各単語とそのカウントを表示します。
for (String word : wordCount.keySet()) { System.out.println(word + ": " + wordCount.get(word)); }
これで、文字列内の各単語の出現回数が表示されます。
実際の例
それでは、実際のプログラム例を見てみましょう。以下に示すのは、上記の手順を全てまとめたJavaプログラムです。
import java.util.HashMap; public class WordCounter { public static void main(String[] args) { String text = "Javaはプログラミング言語です。Javaはオープンソースです。"; String[] words = text.split("[\\s,\\.]+"); HashMapwordCount = new HashMap<>(); for (String word : words) { word = word.toLowerCase(); // 大文字小文字を無視 wordCount.put(word, wordCount.getOrDefault(word, 0) + 1); } // 結果の表示 for (String word : wordCount.keySet()) { System.out.println(word + ": " + wordCount.get(word)); } } }
このプログラムを実行すると、次のような結果が得られます:
java: 2 は: 2 プログラミング言語です: 1 オープンソースです: 1
この結果から分かるように、単語「Java」は2回、単語「は」は2回出現していることがわかります。その他の単語は1回ずつ出現しています。