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

【Java】文字列をN等分に分割するプログラムの書き方


この記事では、Javaを使って文字列を「N」個の等しい部分に分割する方法を解説します。文字列(String)とは、1つ以上の文字を含み、ダブルクォート(“ ”)で囲まれたデータ型のことです。

まずは、どのような動作になるのか具体的な例を見てみましょう。

実行例

入力:

入力文字列: Java Program is fun!

期待される出力:

文字列の長さ: 20
指定された文字列を4等分すると:
Java
Progr
am is
fun!

アルゴリズム

ステップ1 - 処理を開始する
ステップ2 - 文字列 input_string、整数 string_length と N を宣言する
ステップ3 - 各変数に値を設定する
ステップ4 - 一時変数 temp を 0 で初期化する
ステップ5 - 文字列の長さを N で割り、1つあたりの部分の長さを求める
ステップ6 - 文字列の長さが N で割り切れない場合は、その旨のメッセージを表示する。割り切れる場合は文字列を走査する
ステップ7 - 各反復で、substring メソッドを使って該当範囲の部分文字列を取得し、配列に格納する
ステップ8 - 反復のたびに一時変数をインクリメントする
ステップ9 - 分割結果を反復処理し、N 個の部分をコンソールに表示する
ステップ10 - 処理を終了する

例1: main関数にすべての処理を記述する場合

ここでは、すべての操作を main 関数の中にまとめて記述します。

public class Demo {
    public static void main(String[] args) {
        String input_string = "Java Program is fun!";
        System.out.println("定義された文字列: " + input_string);
        int string_length = input_string.length();
        System.out.println("文字列の長さ: " + string_length);
        int N = 4;
        int temp = 0, string_parts = string_length / N;
        String[] equalStr = new String [N];
        if(string_length % N != 0) {
            System.out.println("この文字列は "+ N +" 等分できません。");
        } else {
            for(int i = 0; i < string_length; i = i+string_parts) {
                String part = input_string.substring(i, i+string_parts);
                equalStr[temp] = part;
                temp++;
            }
            System.out.println(N + " 等分した結果:");
            for(int i = 0; i < equalStr.length; i++) {
                System.out.println(equalStr[i]);
            }
        }
    }
}

出力

定義された文字列: Java Program is fun!
文字列の長さ: 20
4 等分した結果:
Java
Progr
am is
fun!

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

続いて、処理を独立したメソッドとしてカプセル化し、オブジェクト指向プログラミングらしい構造に書き直した例です。

public class Demo {
    static void divide_string(String input_string, int N){
        int string_length = input_string.length();
        System.out.println("文字列の長さ: " + string_length);
        int temp = 0, string_parts = string_length / N;
        String[] equalStr = new String [N];
        if(string_length % N != 0) {
            System.out.println("この文字列は "+ N +" 等分できません。");
        } else {
            for(int i = 0; i < string_length; i = i+string_parts) {
                String part = input_string.substring(i, i+string_parts);
                equalStr[temp] = part;
                temp++;
            }
            System.out.println(N + " 等分した結果:");
            for(int i = 0; i < equalStr.length; i++) {
                System.out.println(equalStr[i]);
            }
        }
    }
    public static void main(String[] args) {
        String input_string = "Java Program is fun!";
        System.out.println("定義された文字列: " + input_string);
        int N = 4;
        divide_string(input_string, N);
    }
}

出力

定義された文字列: Java Program is fun!
文字列の長さ: 20
4 等分した結果:
Java
Progr
am is
fun!

ポイント解説

  • substring() メソッド: 指定した開始位置から終了位置の直前までの部分文字列を取り出します。「i から i + string_parts まで」を順に切り出すことで、文字列を等間隔に分割できます。
  • 剰余演算子(%)による事前チェック: string_length % N != 0 の判定により、文字列の長さが N で割り切れない場合はエラーメッセージを表示します。これにより、端数が出て等分できなくなるケースを安全に扱えます。
  • ループの進め方: ループ変数 i を string_parts ずつ増加させることで、先頭から順に N 個のブロックを切り出していきます。

なお、文字列の長さが N で割り切れない場合は単純な等分ができないため、余りの文字を最後のグループに含めるなど、用途に応じた別の設計が必要になります。ぜひ自分のコードに合わせて処理を工夫してみてください。

  1. 【Java】正規表現で括弧()を含む文字列に一致させる方法とサンプルコード

    Javaで文字列の中に括弧「(」や「)」が含まれているかどうかを判定したい場合、正規表現を使うと簡単に実装できます。この記事では、括弧に一致する正規表現の書き方と、実際に動作するサンプルコードを2つのパターンで紹介します。括弧に一致する正規表現以下の正規表現は、括弧を含む文字列を受け入れます。^.*[\\(\\)].*$;このパターンの各要素は次のような意味を持っています。^ … 文字列(行)の先頭に一致します。.* … 0個以上の任意の文字に一致します。[\\(\\)] … 括弧「(」または「)」に一致します。正規表現では括弧は特殊文字のため、バックスラッシュでエスケープする必要があります。

  2. Javaで文字列内の母音をカウントする方法をわかりやすく解説

    Javaでは、拡張forループと条件分岐を組み合わせることで、文字列に含まれる母音(a、e、i、o、u)の数を簡単にカウントできます。この記事では、基本的な実装方法をサンプルコード付きで解説します。 カウントの仕組み まず、カウント用の変数 count を 0 で初期化します。これは、母音の数をこの変数に加算していくためです。 次に、toCharArray() メソッドを使って文字列を1文字ずつ取り出し、Character.toLowerCase() ですべて小文字に変換します。これにより、大文字・小文字を区別せずに母音を判定できるようになります。 for(char ch : myStr.t