
6日でできる 新Java入門|制御文③ forループ
決まった回数の修行を美しく回せるようになると、Javaのコードはもっと整う。forループを身につけて、繰り返し処理をスマートに操ろう
Javaで繰り返し処理を学んでいくと、whileループに続いて必ず押さえておきたいのが forループ です。whileループは、条件が成り立つ間くり返すという考え方を理解するのにとても大切でしたが、繰り返す回数や進み方があらかじめ見えている場面では、forループの方がすっきり書けることが多いです。ドラゴンボールの世界でたとえるなら、whileループが まだ修行条件を満たしているかを毎回確認しながら続ける型 だとすると、forループは 最初から何回型稽古を行うかを決め、その回数どおりに正確に回す型 と考えると分かりやすいです。
for文の強みは、初期化、継続条件、更新処理をひとつの場所にまとめて書けることです。そのため、ループの全体像を一目で把握しやすくなります。どこから始めるのか、どこまで続けるのか、1回ごとにどう進むのかが、for文の丸かっこの中に整理されているので、特に回数が決まっている繰り返しではとても読みやすくなります。
この記事では、for文の基本構文、配列との組み合わせ、得点集計のような実用的な使い方、for文のネスト、さらに if文 と組み合わせた条件付きの繰り返しまで、順番に丁寧に見ていきます。Lesson10_1.java から Lesson10_4.java までの例を使いながら、ドラゴンボール風の修行メニューや技確認の流れに置き換えて整理していきます。ここを理解すると、繰り返し処理の書き方がかなり安定してきます。
for文とは何か
for文は、繰り返し処理を簡潔に書くための構文です。特に、何回くり返すのかが見えているときや、配列の要素を先頭から順番に処理したいときにとても便利です。
ドラゴンボール風にいえば、for文は 型稽古の回数表 があらかじめ決まっている修行メニューのようなものです。1回目から何回目まで行うのか、各回が終わったら次へどう進むのかが、最初から整理されています。
for文が向いている場面
| 場面 | for文が使いやすい理由 |
|---|---|
| 回数が決まっている繰り返し | 最初から終了までの流れを書きやすい |
| 配列の全要素処理 | インデックスを順番に進めやすい |
| 表や一覧の出力 | 規則的なくり返しを書きやすい |
| 条件付きの反復 | if文と組み合わせやすい |
このように、for文は 規則的な繰り返し ととても相性がよいです。
for文の基本構文
for文では、初期化、継続条件、更新処理を丸かっこの中にまとめて書きます。
for文の基本形
for (初期化; 継続条件; 更新処理) {
// 繰り返したい処理
}この形はとても大切です。見た目は少し長く感じるかもしれませんが、ループの流れがひとまとまりで見えるのが特徴です。
for文の各部の意味
| 要素 | 内容 |
|---|---|
| 初期化 | ループ開始時に一度だけ実行する |
| 継続条件 | 条件が true の間くり返す |
| 更新処理 | 各ループの最後に実行する |
| ブロック | 実際にくり返し実行される処理 |
たとえば次のような書き方があります。
for (int i = 0; i < 5; i++) {
System.out.println(i);
}この場合は、i を 0 から始めて、5 より小さい間だけ処理を続け、1回ごとに i を 1 ずつ増やしています。
ドラゴンボール風にたとえるなら、これは 修行番号 i を 0 から始めて、5回目に達する前まで続け、各回の最後に次の番号へ進む という流れです。
for文の動きを順番に見る
for文は1行にまとまっているぶん、最初は流れが見えにくいことがあります。そこで、実行順を分けて見ると理解しやすくなります。
実行の流れ
| 順番 | 何が起きるか |
|---|---|
| 1 | 初期化を一度だけ実行する |
| 2 | 継続条件を判定する |
| 3 | true ならブロックを実行する |
| 4 | 更新処理を実行する |
| 5 | 再び継続条件を判定する |
この 2 → 3 → 4 → 2 の流れがくり返されていきます。条件が false になった時点で終了です。
配列とfor文を組み合わせる例
for文は配列と非常に相性がよいです。配列の要素を先頭から順番に取り出して表示するような処理は、for文の代表的な使い方です。
ファイル名:Lesson10_1.java
public class Lesson10_1 {
public static void main(String[] args) {
String[] techniques = {"気をためる", "構えを整える", "連続突きを練習する", "集中して呼吸する"};
for (int i = 0; i < techniques.length; i++) {
int num = i + 1;
System.out.println(num + "番目の技:" + techniques[i]);
}
}
}実行結果
1番目の技:気をためる
2番目の技:構えを整える
3番目の技:連続突きを練習する
4番目の技:集中して呼吸するこのプログラムでは、配列 techniques の各要素を、for文で順番に取り出して表示しています。
この例で見たいこと
| 部分 | 役割 |
|---|---|
| int i = 0 | 最初の要素から始める |
| i < techniques.length | 配列の最後まで続ける |
| i++ | 次の要素へ進む |
| techniques[i] | 現在の要素を取り出す |
| i + 1 | 人に見せる番号を1始まりにする |
ここで大切なのは、配列のインデックスは 0 から始まるけれど、人に見せる番号は 1 からにしたいことが多い、という点です。そのため num = i + 1 としています。
配列を使った得点集計の例
for文は、単に表示するだけでなく、くり返しながら条件を調べて集計する処理にも向いています。
ファイル名:Lesson10_2.java
public class Lesson10_2 {
public static void main(String[] args) {
int[] targetMoves = {3, 1, 4, 2, 2, 3, 1};
int[] actualMoves = {3, 2, 4, 2, 1, 3, 1};
int successCount = 0;
for (int i = 0; i < targetMoves.length; i++) {
if (targetMoves[i] == actualMoves[i]) {
successCount++;
}
}
System.out.println("成功した動きの合計:" + successCount);
}
}実行結果
成功した動きの合計:5このプログラムでは、targetMoves と actualMoves の各位置を順番に比べています。そして一致していたら successCount を 1 増やしています。
この例で大事な流れ
| 処理 | 内容 |
|---|---|
| 配列の同じ位置を比較する | targetMoves[i] == actualMoves[i] |
| 一致したら加算する | successCount++ |
| 最後に合計を表示する | 成功回数が分かる |
ドラゴンボール風にたとえるなら、これは 師匠が指定した型 と 実際にできた型 を1つずつ見比べて、何回正しくできたかを数えているようなものです。for文があることで、1項目ずつ順番に公平に確認できます。
for文のネストとは何か
for文の中にさらに for文 を書くことを ネスト、または入れ子 と呼びます。これは、表のように 縦と横 の両方をくり返したいときに便利です。
for文のネストの例
ネストの代表例として、ここでは 九九表 を表示するプログラムを見てみます。外側の for文 が段を進め、内側の for文 がその段の中の掛け算を横に並べていきます。
ファイル名:Lesson10_3.java
public class Lesson10_3 {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
System.out.print(i * j + "\t");
}
System.out.println();
}
}
}実行結果
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81このプログラムでは、外側の i が 1段目から9段目までの行を担当しています。そして内側の j が、その段の中で 1から9までを順番に掛けて横に並べています。1行分が終わったら System.out.println(); で改行し、次の段へ進みます。
ネストの考え方
| ループ | 役割 |
|---|---|
| 外側の for | 行を進める |
| 内側の for | 列を進める |
この構造を理解すると、表形式の出力や、二重にくり返す処理がかなり分かりやすくなります。九九表は見た目にも規則がはっきりしているので、for文のネストを学ぶ題材としてとても相性がよいです。
9×9の九九表で意識したいこと
| 部分 | 意味 |
|---|---|
| int i = 1 | 1の段から始める |
| i <= 9 | 9の段まで進める |
| int j = 1 | 各段の最初の掛ける数は1 |
| j <= 9 | 各段で9まで横に並べる |
| System.out.print(i * j + "\t") | 計算結果を同じ行に続けて出す |
| System.out.println() | 1段分が終わったら改行する |
ここでは print と println の使い分けも大切です。内側のループでは同じ行に結果を横並びで表示したいので print を使い、外側のループの最後で改行するために println を使っています。
if文とfor文の組み合わせ
for文は、ただ全てをくり返すだけでなく、条件に合うものだけを処理するのにも使えます。そのときに組み合わせるのが if文 です。
たとえば 1から10までの中で偶数だけを表示する といった処理は、for文とif文の代表的な組み合わせです。ここでは偶数の回だけ特別修行を行う流れに置き換えてみます。
ファイル名:Lesson10_4.java
public class Lesson10_4 {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
System.out.println(i + "回目の修行は偶数回の特訓日です");
}
}
}
}実行結果
2回目の修行は偶数回の特訓日です
4回目の修行は偶数回の特訓日です
6回目の修行は偶数回の特訓日です
8回目の修行は偶数回の特訓日です
10回目の修行は偶数回の特訓日ですこのプログラムでは、1から10まで順番に見ていき、その中で i % 2 == 0 が true のときだけ表示しています。
この条件の意味
| 式 | 意味 |
|---|---|
| i % 2 | 2で割った余り |
| i % 2 == 0 | 余りが0なので偶数 |
ここでは for文が 全体を順番に進める役、if文が その中で条件に合うものだけを選ぶ役 を持っています。この組み合わせはかなりよく使います。
while文とfor文の違い
ここまで for文 を見てきましたが、while文との違いも整理しておくと理解が深まります。どちらも繰り返し処理ですが、得意な場面が少し違います。
while文とfor文の比較
| 項目 | while文 | for文 |
|---|---|---|
| 条件の見え方 | 条件中心で書く | 回数や進行をまとめて書ける |
| 向いている場面 | 終了条件が中心のとき | 回数やインデックスが明確なとき |
| 配列処理 | 書ける | 特に書きやすい |
| 見た目 | 初期化と更新が別になりやすい | 1行にまとまってすっきりする |
ドラゴンボール風にたとえるなら、while文は まだ条件を満たしているかを見ながら続ける修行、for文は 最初から決められた回数どおりに型を回す修行 です。どちらも大事ですが、今回のテーマでは for文 が 回数の見通しのよさ で力を発揮します。
forループの流れを図で整理
下図はは、for文が 初期化 → 条件判定 → 処理実行 → 更新処理 → 再判定 という流れで進むことを示したものです。while文との違いとして、初期化と更新処理が最初からまとまっていることも分かります。
↓クリックすると拡大表示されます。

この図から分かること
この図を見ると、for文は ただくり返す のではなく、開始、継続、更新の3つがまとまった構造を持っていることが分かります。
配列とfor文の組み合わせを図で整理
下図は、for文のループ変数 i が 0 から始まり、配列の各要素を順番に指しながら、length に達する前まで取り出していく流れを示したものです。i の値と配列のインデックスの対応が見えるため、なぜ i < 配列.length という条件になるのかが自然に理解できます。

この図から分かること
この図を見ると、for文の i が配列のインデックスと対応しながら、先頭から順番に要素を取り出していることが分かります。配列とfor文が相性のよい理由もつかみやすくなります。
forループを理解すると、繰り返し処理がかなり整って見えるようになる
for文は、繰り返し処理の中でもとてもよく使う基本構文です。初期化、継続条件、更新処理がまとまっているので、回数の見通しが立ちやすく、配列処理や集計処理とも自然につながります。さらに、if文と組み合わせたり、入れ子にしたりすることで、表の出力や条件つきの繰り返しまで柔軟に書けるようになります。
ドラゴンボールの修行でも、ただ同じ動きを続けるだけではなく、何回行うか、どこまで進めるか、条件に合う動きだけを選ぶかを整理することで、修行の質が上がっていきます。Javaの forループ も同じで、繰り返し処理を見通しよく整えるための、とても強力な型です。
