Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaで文字列内の文字の出現頻度を求めるプログラムの書き方


この記事では、文字列の中に特定の文字が何回出現するか(出現頻度)を求める方法について解説します。文字列(String)とは、1つ以上の文字を含み、ダブルクォート(" ")で囲まれたデータ型のことです。

まず、実際の入力と出力の例を見てみましょう。

入力値

入力文字列: Java Programming is fun
入力文字: a

期待される出力

a の出現頻度は 3 です

アルゴリズム

処理の流れは以下のステップのとおりです。

ステップ1 - 開始
ステップ2 - 文字列 input_string、char型変数 input_character、int型変数 counter を宣言する
ステップ3 - 各変数に値を設定する
ステップ4 - forループで文字列を先頭から順に走査し、各文字が指定された文字と一致するかを比較する。一致した場合はカウンターを1増やす
ステップ5 - 結果を表示する
ステップ6 - 終了

例1:mainメソッドにすべての処理を記述する場合

ここでは、すべての処理を main メソッド内にまとめて記述しています。文字列の長さだけループを回し、charAt() メソッドで1文字ずつ取り出して比較する、最も基本的な実装方法です。

public class Demo {
   public static void main(String[] args) {
      String input_string = "Java Programming is fun";
      System.out.println("The string is defined as: " +input_string);
      char input_character = 'a';
      System.out.println("The character is defined as: " +input_character);
      int counter = 0;
      for(int i = 0; i < input_string.length(); i++) {
         if(input_character == input_string.charAt(i)) {
            ++counter;
         }
      }
      System.out.println("The frequency of " + input_character + " is " + counter );
   }
}

出力

The string is defined as: Java Programming is fun
The character is defined as: a
The frequency of a is 3

例2:オブジェクト指向スタイルでメソッドに分割する場合

ここでは、文字をカウントする処理を独立したメソッドとしてカプセル化し、オブジェクト指向プログラミングの考え方に沿って実装しています。処理を分離することで、コードの再利用性と可読性が向上します。

public class Demo {
   public static int get_count(String input_string,char input_character) {
      int counter = 0;
      for (int i = 0; i < input_string.length(); i++) {
         if (input_character == input_string.charAt(i)) {
            ++counter;
         }
      }
      return counter;
   }
   public static void main(String[] args) {
      String input_string = "Java Programming is fun";
      System.out.println("The string is defined as: " +input_string);
      char input_character = 'a';
      System.out.println("The character is defined as: " +input_character);
      int counter = get_count(input_string, input_character);
      System.out.println("The frequency of " + input_character + " is " + counter );
   }
}

出力

The string is defined as: Java Programming is fun
The character is defined as: a
The frequency of a is 3

ポイント解説

このプログラムの核となるのは charAt(int index) メソッドです。これは、文字列内の指定されたインデックス位置にある文字を返すメソッドで、インデックスは0から始まります。ループでインデックスを0から「文字列の長さ - 1」まで順に指定しながら、目的の文字と一致するかを == 演算子で比較することで、出現回数を正確にカウントできます。

なお、大文字と小文字は区別されるため、たとえば「A」と「a」は別の文字として扱われます。区別せずにカウントしたい場合は、Character.toLowerCase() などで文字列と検索文字の両方を小文字に変換してから比較するとよいでしょう。


  1. Javaで台形の面積を求めるプログラムの作成方法を解説

    この記事では、Javaを使って台形(トラペジウム)の面積を求める方法について詳しく解説します。台形とは、少なくとも1組の対辺が互いに平行になっている四角形のことです。平行な2つの辺は「底辺」と呼ばれ、平行でない残りの2つの辺は「脚」と呼ばれます。英語圏では trapezoid(トラペゾイド)と呼ばれることもあります。 台形の面積は、次の公式を使って計算できます。 面積 = (高さ ÷ 2) × (上底 + 下底) すなわち、 面積 = ½ × (平行な2辺の長さの合計) × (平行な2辺間の垂直距離) 以下に具体的なイメージを示します。平行な2辺の長さを a、b、台形の高さを h としたとき

  2. 【Java入門】長方形の周囲(外周)を求めるプログラムの作り方

    長方形の周囲とは? この記事では、Javaを使って長方形の周囲(外周)を求める方法を解説します。長方形の周囲とは、長方形の4つの辺すべての長さを足し合わせた合計のことで、次の図のように「縦の辺2本」と「横の辺2本」の長さを合計したものに相当します。 長方形は向かい合う辺の長さが等しいという性質を持つため、周囲は次の式で計算できます。 周囲 = 2 ×(縦の長さ + 横の長さ) 入力と出力の例 たとえば、入力が次の値であるとします。 長方形の各辺の長さ:5, 8, 5, 8 このとき、期待される出力は次のとおりです。 Perimeter : 26 アルゴリズム 処理の流れは以下のようになりま