Javaで文字列の各文字を反復処理する方法|for文と拡張for文のサンプルコード解説
この記事では、Javaにおいて文字列(String)に含まれる各文字を1つずつ反復処理して取り出す方法について解説します。
まず基本をおさらいしましょう。String型は、1つ以上の文字をダブルクォート(" ")で囲んで表現するデータ型です。一方、char型は、アルファベット・数字・記号などの単一の文字を格納するためのデータ型です。文字列を構成する個々の文字を取得するには、このchar型が活用されます。
処理内容の確認
今回実装するプログラムの動作イメージは以下のとおりです。
入力例
定義された文字列: Java Program
出力例
文字列内の各文字: J, a, v, a, , P, r, o, g, r, a, m,
アルゴリズム
処理の手順は次のようになります。
Step 1 - 開始 Step 2 - 文字列 input_string と char型変数 temp を宣言する Step 3 - 値を定義する Step 4 - 文字列を反復処理し、インデックス i の位置にある文字を空白区切りで表示する Step 5 - 結果を出力する Step 6 - 終了
例1:for文を使った方法
最初の例では、従来のfor文を使用します。インデックスを0から順に増やしながら、charAt()メソッドで指定位置の文字を取り出していきます。
public class Characters {
public static void main(String[] args) {
String input_string = "Java Program";
System.out.println("定義された文字列: " + input_string);
System.out.println("文字列内の各文字:");
for(int i = 0; i < input_string.length(); i++) {
char temp = input_string.charAt(i);
System.out.print(temp + ", ");
}
}
}実行結果
定義された文字列: Java Program 文字列内の各文字: J, a, v, a, , P, r, o, g, r, a, m,
例2:拡張for文(for-each)を使った方法
次の例では、拡張for文(for-eachループ)を使用します。toCharArray()メソッドで文字列をchar型の配列に変換すれば、インデックス管理なしで簡潔に各文字へアクセスできます。
public class Main {
public static void main(String[] args) {
String input_string = "Java Program";
System.out.println("定義された文字列: " + input_string);
System.out.println("文字列内の各文字:");
for(char temp : input_string.toCharArray()) {
System.out.print(temp + ", ");
}
}
}実行結果
定義された文字列: Java Program 文字列内の各文字: J, a, v, a, , P, r, o, g, r, a, m,
まとめ
文字列の各文字へのアクセスには、for文+charAt()と拡張for文+toCharArray()の2つの代表的なアプローチがあります。インデックスが必要な処理では前者を、シンプルに全文字を扱いたい場合は後者を選ぶとよいでしょう。用途に応じて使い分けることで、より読みやすく保守性の高いコードを書くことができます。
-
Javaで文字列内の各文字の出現回数をカウントする方法(HashMap活用)
Javaで文字列に含まれる各文字が何回出現するかをカウントしたい場面は多くあります。例えば、テキスト解析やデータ処理の前処理などです。本記事では、HashMapを使って効率的に各文字の出現回数を数える方法を解説します。 対象となる文字列 今回は、次の文字列を例にして説明します。 String myStr = thisisit; この文字列「thisisit」には、t・h・i・s の4種類の文字が含まれており、それぞれの出現回数を求めるのがゴールです。 カウントの仕組み:HashMapを使ったアプローチ 文字ごとの出現回数を管理するために、キーに文字(Character)、値に出現回数(Inte
-
【Java入門】文字列から各単語の最初の文字だけを抽出して出力する方法
JavaにおけるStringクラスは、文字列を表すために使用されるクラスです。Javaプログラム内に記述されたすべての文字列リテラルは、Stringクラスのインスタンスとして扱われます。また、Stringオブジェクトは定数であり、一度生成するとその値を後から変更することができません。この性質は「不変(イミュータブル)」と呼ばれます。 文字列の中から各単語の最初の文字だけを取り出して出力したい場合は、以下のようなプログラムで実現できます。 サンプルコード public class FirstCharacterPrintTest { public static void main(Stri