初心者向けにもっと噛み砕いて、たっぷり例題とステップごとの解説を付けます。実際に手を動かして理解できるように、基本から応用(配列・ネスト・break/continue・無限ループ)まで、コードと出力、そして練習問題+解答を順に示します。
for 文のイメージ
for 文は「同じ処理を決まった回数だけ繰り返す」ための道具です。
イメージ:はじめに目印(変数)を置く → 「まだ続ける?」を確認 → 本体を実行 → 目印を進める → また「まだ続ける?」… を繰り返す。
構文:
for (初期化式; 条件式; 変化式) {
// ここが繰り返す処理(本体)
}
Java- 初期化式:最初に1回だけ実行(例:
int i = 0) - 条件式:
trueの間ループを続ける(例:i < 5) - 変化式:1回の繰り返しが終わったあとに実行(例:
i++)
例1:0から4を順に表示する(もっとも基本)
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
Java動き(ステップ):
- 初期化:
i = 0 - 条件チェック:
0 < 5→ true → 本体実行 → 表示0 - 変化式:
i++→i = 1 - 条件チェック:
1 < 5→ true → 表示1
… 同様に2, 3, 4を表示
最後:i = 5で5 < 5が false → 終了
出力:
0
1
2
3
4
ポイント:i はループごとに変化して、条件を満たす間だけ実行される。
例2:合計を計算する(0〜4 の合計)
int sum = 0;
for (int i = 0; i < 5; i++) {
sum += i; // sum = sum + i
}
System.out.println(sum);
Java計算の流れ(手で追うと理解しやすい):
- 初期:
sum = 0 - i=0 → sum = 0 + 0 = 0
- i=1 → sum = 0 + 1 = 1
- i=2 → sum = 1 + 2 = 3
- i=3 → sum = 3 + 3 = 6
- i=4 → sum = 6 + 4 = 10
出力:10
例3:配列(またはリスト)の要素を順に処理する
String[] names = {"Alice", "Bob", "Charlie"};
for (int i = 0; i < names.length; i++) {
System.out.println("index " + i + ": " + names[i]);
}
Java出力:
index 0: Alice
index 1: Bob
index 2: Charlie
ポイント:配列の長さは names.length で得られるので、i < names.length を条件にするのが安全。
例4:ネスト(入れ子)for — 表を作る
for (int r = 1; r <= 3; r++) {
for (int c = 1; c <= 3; c++) {
System.out.print(r * c + "\t"); // 同じ行に表示
}
System.out.println(); // 改行
}
Java出力(3×3 の掛け算表):
1 2 3
2 4 6
3 6 9
ポイント:外側ループ1回につき内側ループは最初から最後まで回る → 総実行回数は掛け算的に増える(3×3 = 9回)。
例5:break と continue
break;→ ループを完全に抜けるcontinue;→ 今回の繰り返しをスキップして、次の繰り返しへ
for (int i = 0; i < 10; i++) {
if (i == 5) break; // i が 5 になったらループ終了
if (i % 2 == 0) continue; // 偶数のときは下をスキップ(次へ)
System.out.println(i); // 奇数だけ出力
}
Javaここでは 1, 3 が出力され、その後 i==5 で break する(したがって 5 より後は実行されない)。
例6:無限ループの作り方(注意!)
for (;;) {
// 条件式を省略すると常に true とみなされる → 無限ループ
// 必要なら中で break; で抜ける
}
Java実務では for(;;) より while(true) のほうが読みやすいことが多いです。無限ループは必ず抜ける条件や break を用意しましょう。
初心者がやりがちなミス(チェックリスト)
- 条件がいつまでも
true→ 無限ループになる(変化式を書き忘れた等) - ループ変数のスコープを誤解(for 内で宣言した
iは for の外で使えない) - 配列アクセスで範囲外を参照(
i <= array.lengthとしてしまい、最後でArrayIndexOutOfBoundsException)
→ 正しくはi < array.length - ネストで指数的に実行回数が増えて遅くなる(大きいデータでは注意)
練習問題
下に 4 問。解答と解説は続けて付けます。まずは自分で考えてから答えを見てね。
問題1
0 から 9 までの数字を一行ずつ表示する for を書け。
問題2
1 から 10 までの合計を for で計算して出力せよ。
問題3
整数配列 int[] a = {3, 7, 2, 9} の最大値を for で見つけて表示せよ。
問題4(少し応用)* を使って、次のようなピラミッド(3段)を for で出力せよ(結果は下のとおり):
*
**
***
解答とステップごとの解説
解答1
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
Java解説:i を 0 から始めて i < 10 の間繰り返すので 0〜9 が表示されます。
解答2
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i;
}
System.out.println(sum);
Javaステップで追うと:
1 + 2 + 3 + … + 10 を順に加算
途中の合計(省略せずに書くと):
- i=1 → sum=1
- i=2 → sum=3
- i=3 → sum=6
- i=4 → sum=10
- i=5 → sum=15
- i=6 → sum=21
- i=7 → sum=28
- i=8 → sum=36
- i=9 → sum=45
- i=10 → sum=55
出力:55
(メモ:公式なら n(n+1)/2 = 10×11/2 = 55)
解答3
int[] a = {3, 7, 2, 9};
int max = a[0]; // 最初を仮の最大値にする
for (int i = 1; i < a.length; i++) {
if (a[i] > max) {
max = a[i];
}
}
System.out.println(max); // 9
Java解説(ステップ):
- 初期:
max = 3 - i=1 → a[1]=7 → 7 > 3 ? yes → max=7
- i=2 → a[2]=2 → 2 > 7 ? no → max stays 7
- i=3 → a[3]=9 → 9 > 7 ? yes → max=9
出力:9
解答4
int n = 3; // 段数
for (int i = 1; i <= n; i++) {
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
Java解説:
- 外側
iが 1 のとき、内側ループj=0..<1で*を1つ出力 → 改行 - i=2 のとき、内側で
*を2つ出力 → 改行 - i=3 のとき、
*を3つ出力 → 改行
出力:
*
**
***
さらに練習したい人向け(応用のヒント)
- 配列の全要素を合計して平均を出すプログラムを作る(配列長に注意)
- 2次元配列(行列)を
forのネストで処理して、行ごとの合計を出す breakを使って条件付きで早めにループを抜ける例を作る(見つけたら検索を止める等)continueを使って特定の要素だけをスキップする(負の数を無視して正の数だけ合計する等)

