• Xでシェア
  • LINEでシェア
  • このエントリーをはてなブックマークに追加

Java for文の使い方

この記事のポイント

  • Javaにおけるfor文の基本概念と構文
  • 基本for文と拡張for文の使い分け
  • 実際の開発で使える豊富なコード例とテクニック

目次

Javaにおけるfor文とは?

Javaのfor文は、同じ処理を指定回数だけ繰り返し実行するために使う制御構造です。

for文は、プログラミングにおいて最も基本的なループ処理の一つであり、「1から10まで数える」「配列のすべての要素を処理する」といった反復作業を効率的に実現するうえで役立ちます。

for文には、基本的なfor文と拡張for文(for-each文)の2種類があります。

基本のfor文は、初期化、条件式、更新式の3つの要素で構成されており、繰り返し回数を細かく制御できる特徴があります。

これに対して拡張for文は、配列やコレクションの全要素を順次処理する際に便利なものであり、より簡潔に書けるところが利点です。こうした特徴から、データの一括処理、計算の反復実行、リストの表示といったプログラミングのあらゆる場面で活用されています。

for文の適切な使用は、プログラムの効率性と保守性を高めるうえでの大切なポイントになるでしょう。

【関連】
Javaをもっと詳しく学ぶならpaizaラーニング

基本構文

基本のfor文は、「for(初期化; 条件式; 更新式)」の形式で記述します。具体的には、初期化でループ変数を設定したうえで、条件式で継続条件を判定し、更新式でループ変数を変更するイメージでしょう。

これに対して拡張for文は、「for(データ型 変数名 : 配列またはコレクション)」の形式で記述することで、配列やコレクションの全要素を自動的に処理できる形です。また、ネスト(入れ子)したfor文を使うことで、二次元配列の処理や複雑な繰り返しパターンも実現も可能となります。

public class Main { public static void main (String[] args) { // 基本的なfor文 for (int i = 1; i <= 3; i++) { System.out.println(i + "匹目のウサギ"); } } }

出力結果:

1匹目のウサギ
2匹目のウサギ
3匹目のウサギ
public class Main { public static void main (String[] args) { // 拡張for文(for-each文) String[] animals = {"イヌ", "ネコ", "ハムスター"}; for (String animal : animals) { System.out.println(animal + "がいます"); } } }

出力結果:

イヌがいます
ネコがいます
ハムスターがいます

実用例

Javaのfor文は、さまざまな繰り返し処理を表現できる強力な制御構造です。

このセクションでは、実際の開発現場でよく使われる繰り返し処理について、動物をテーマにしたコード例を見ながら紹介します。

このセクション内容に目を通すと、数値の計算、配列の操作、文字列の処理、ネストしたループまで、日常的なプログラミング作業で必要となるさまざまなパターンを具体的なコード例とともに学習できるでしょう。

各例では、コードの動作を理解しやすくするために、実行結果も併せて示しています。

for文を早く理解したい方は、さまざまなコード例を自分の開発環境に実装したうえで、繰り返し処理を実際に動かしてみてください。自分のニーズに合う繰り返し処理のコードを書くなかでは、for文の適切な使い方や可読性が高いプログラム作成のポイントなども身についてくるでしょう。

数値の累積計算

以下で示しているのは、for文を使って数値の累積計算を行う方法です。動物の体重を合計して平均を求める例であり、基本的な計算処理の繰り返しを行っています。

public class Main { public static void main (String[] args) { double[] weights = {12.5, 8.3, 15.7, 22.1, 9.8}; double total = 0.0; for (int i = 0; i < weights.length; i++) { total += weights[i]; System.out.println((i + 1) + "匹目のネコ: " + weights[i] + "kg"); } double average = total / weights.length; System.out.println("総重量: " + total + "kg"); System.out.println("平均重量: " + String.format("%.1f", average) + "kg"); } }

出力結果:

1匹目のネコ: 12.5kg
2匹目のネコ: 8.3kg
3匹目のネコ: 15.7kg
4匹目のネコ: 22.1kg
5匹目のネコ: 9.8kg
総重量: 68.4kg
平均重量: 13.7kg

条件付きループ処理

以下で示しているのは、for文内で条件分岐を組み合わせて、特定の条件を満たす要素のみを処理する方法です。具体的には、動物の年齢をチェックして成体のみをカウントするコード例になります。

public class Main { public static void main (String[] args) { int[] ages = {2, 5, 1, 8, 3, 12, 6}; int adultCount = 0; for (int i = 0; i < ages.length; i++) { if (ages[i] >= 3) { adultCount++; System.out.println("成体のイヌ: " + ages[i] + "歳"); } } System.out.println("成体の数: " + adultCount + "匹"); } }

出力結果:

成体のイヌ: 5歳
成体のイヌ: 8歳
成体のイヌ: 3歳
成体のイヌ: 12歳
成体のイヌ: 6歳
成体の数: 5匹

逆順ループ処理

以下で示しているのは、for文のカウンタを逆方向に変化させて、配列を逆順で処理する方法です。動物の名前を逆順で表示するコード例であり、デクリメント(数値から1減らす操作)を使ったループの書き方を説明しています。

public class Main { public static void main (String[] args) { String[] zooAnimals = {"ライオン", "ゾウ", "キリン", "サル", "シマウマ"}; System.out.println("動物園の動物(逆順):"); for (int i = zooAnimals.length - 1; i >= 0; i--) { System.out.println((zooAnimals.length - i) + "番目: " + zooAnimals[i]); } } }

出力結果:

動物園の動物(逆順):
1番目: シマウマ
2番目: サル
3番目: キリン
4番目: ゾウ
5番目: ライオン

ネストしたfor文

以下で示しているのは、for文を入れ子にして、二次元的な処理を実行する方法です。動物の群れをあらわす二次元配列を処理するコード例であり、ネストしたループの基本的な使い方を表現しています。

public class Main { public static void main (String[] args) { String[][] animalGroups = { {"リス", "ウサギ", "ハムスター"}, {"ライオン", "トラ", "チーター"}, {"ペンギン", "アザラシ"} }; for (int i = 0; i < animalGroups.length; i++) { System.out.println("グループ" + (i + 1) + ":"); for (int j = 0; j < animalGroups[i].length; j++) { System.out.println(" " + animalGroups[i][j]); } } } }

出力結果:

グループ1:
  リス
  ウサギ
  ハムスター
グループ2:
  ライオン
  トラ
  チーター
グループ3:
  ペンギン
  アザラシ

拡張for文での文字列処理

以下で示しているのは、拡張for文を使って配列やコレクションの全要素を処理する方法です。このコード例では、動物の名前に特定の文字が含まれているかどうかをチェックしています。

public class Main { public static void main (String[] args) { String[] pets = {"ハムスター", "モルモット", "フェレット", "チンチラ", "デグー"}; String searchChar = "ー"; int count = 0; System.out.println("「" + searchChar + "」を含む動物:"); for (String pet : pets) { if (pet.contains(searchChar)) { count++; System.out.println(count + ". " + pet); } } System.out.println("該当する動物の数: " + count + "匹"); } }

出力結果:

「ー」を含む動物:
1. ハムスター
2. デグー
該当する動物の数: 2匹

ステップ数を指定したループ

以下で示しているのは、for文のカウンタを指定ステップ数で増減させる方法です。動物の檻を偶数番号のみチェックするコード例となっており、カウンタの増分を変更した場合のループの書き方を表現しています。

public class Main { public static void main (String[] args) { String[] cages = {"クマ", "オオカミ", "キツネ", "タヌキ", "シカ", "イノシシ"}; System.out.println("奇数番号の檻の動物:"); for (int i = 0; i < cages.length; i += 2) { System.out.println("檻" + (i + 1) + "番: " + cages[i]); } System.out.println("偶数番号の檻の動物:"); for (int i = 1; i < cages.length; i += 2) { System.out.println("檻" + (i + 1) + "番: " + cages[i]); } } }

出力結果:

奇数番号の檻の動物:
檻1番: クマ
檻3番: キツネ
檻5番: シカ
偶数番号の檻の動物:
檻2番: オオカミ
檻4番: タヌキ
檻6番: イノシシ

複数配列の同時処理

以下で示しているのは、複数の配列を同時に処理したうえで、関連情報を組み合わせる方法です。動物の名前と年齢を対応させて表示するコード例となっており、インデックスを使った並列処理をあらわしています。

public class Main { public static void main (String[] args) { String[] animalNames = {"パンダ", "コアラ", "カンガルー"}; int[] animalAges = {8, 12, 5}; String[] countries = {"中国", "オーストラリア", "オーストラリア"}; System.out.println("動物情報一覧:"); for (int i = 0; i < animalNames.length; i++) { System.out.println((i + 1) + ". " + animalNames[i] + " (" + animalAges[i] + "歳, " + countries[i] + "出身)"); } } }

出力結果:

動物情報一覧:
1. パンダ (8歳, 中国出身)
2. コアラ (12歳, オーストラリア出身)
3. カンガルー (5歳, オーストラリア出身)

パターン出力でのネストループ

以下で示しているのは、ネスト(入れ子)したfor文を使い、パターンを描画する方法です。動物の絵文字を使って三角形のパターンを作成するコード例となっており、二重ループの応用的な使い方をあらわしています。

public class Main { public static void main (String[] args) { String animal = "🐾"; int rows = 4; System.out.println("動物の足跡パターン:"); for (int i = 1; i <= rows; i++) { for (int j = 1; j <= i; j++) { System.out.print(animal + " "); } System.out.println(); } } }

出力結果:

動物の足跡パターン:
🐾
🐾 🐾
🐾 🐾 🐾
🐾 🐾 🐾 🐾

まとめ

Javaのfor文は、繰り返し処理を効率的に実現するうえで重要な制御構造です。

基本のfor文には、詳細な制御ができる特徴があります。一方で拡張for文を使うと、簡潔に記述することが可能です。

for文は、配列の処理、数値計算、パターン生成といったさまざまな場面で活用できます。また、ネストしたループや条件分岐との組み合わせることで、複雑な処理も表現できるでしょう。

Javaプログラミング初心者の皆さんは、for文の機能を理解したうえで、適切に使い分けられるようになることを目指してみてください。for文をマスターすると、読みやすく効率的なプログラムが作成できるようになります。

レベルを更に上げたい方はpaizaプログラミングスキルチェック

  1. paizaラーニングトップ
  2. リファレンス
  3. Javaのリファレンス記事一覧
  4. Java for文の使い方