間違える前に知っておきたい!for文の“つまずきポイント5選”

for文について Java

「for文の書き方が覚えられない」「iって何?」「無限ループで止まらなくなった…」Java学習者なら一度は通る道です。
私も最初は、カッコの中が呪文のように見えて、意味が全然わかりませんでした。特に i++ を忘れてパソコンが止まりかけた時は、本気で焦りました。
この記事では、小学5年生でも理解できるように「for文とは何か」「なぜカウンタ変数が必要なのか」「無限ループをどう防ぐのか」などをPREP法で解説していきます。
「ずっと怖かったfor文が、初めて“味方”に感じられた」「配列の使い方まで一気に理解できた!」という声も多数。
繰り返し処理で「九九表」や「点数の合計」を出すような、実践的でイメージしやすい例を中心に紹介します。
この記事を読めば、あなたも今日から「for文マスター」になれます。さっそく読み進めてみましょう!

for文の構文ルールが覚えられない

for文は、「3つのパーツ(初期化・条件・更新)」でできていて、そのルールを理解すればカンタンに書けます。
for文の書き方が難しく感じるのは、for (初期化; 条件; 更新)という書式が「何を意味しているのか」イメージできないからです。でも、それぞれの役割を分解して覚えれば、暗記に頼らず自然と書けるようになります。
九九の2の段を出力するコードで考えてみましょう:

for (int i = 1; i <= 9; i++) {
    System.out.println("2 × " + i + " = " + (2 * i));
}

この1行に、3つの意味があります:

  1. int i = 1; → スタート地点(iという数を1から始める)
  2. i <= 9; → ゴールの条件(iが9以下の間、繰り返す)
  3. i++ → ステップ(1回ごとにiを1つ増やす)

この順番で繰り返されて、ループが動きます。1周ごとに System.out.println が実行される、というわけです。

【よくある間違い】

  • セミコロンの位置がズレて for (int i = 1 i <= 9; i++) と書いてしまう → エラー
  • 中カッコ {} を省略して1行だけ書く → 2行以上書くときにバグになりやすい
  • ; を最後に付けてしまう → for (...) ; {} のように実行されないループになる

for文は、「スタート」「条件」「ステップ」の3つの流れを頭の中で再現できれば、正しく書けるようになります!

カウンタ変数(iなど)やその使い道がイメージできない

カウンタ変数は、「何回目のループか」「何番目のデータか」を数えるための“しるし”です。
for文では同じ処理を何度も繰り返しますが、「今が何回目なのか」「何番目のデータを扱っているか」が分からないと、意味のある繰り返しができません。そこで使うのが「カウンタ変数(たいていはi)」です。
例えば、生徒5人の名前を順番に表示するには、配列とfor文を使って次のように書きます:

String[] names = {"たろう", "はなこ", "けんじ", "さくら", "ゆうた"};
for (int i = 0; i < names.length; i++) {
    System.out.println((i + 1) + "人目: " + names[i]);
}

この中で i は0から始まり、1回ループするたびに1ずつ増えます。これが「カウンタ」です。

  • i = 0 → names[0](たろう)を表示
  • i = 1 → names[1](はなこ)を表示

というように、iの値が「今どのデータを使っているか」のヒントになります。
【カウンタ変数の使いどころ】

  • 配列やリストの添字として(例:scores[i]
  • 合計や平均を出すときに何人目かを示す
  • 偶数回/奇数回だけ実行するなどの条件に使う

【カウンタ変数の名前】

  • 基本は i でOKですが、複雑な入れ子構造のときは j, k などを使います。
  • 意味を持たせたいときは indexcount などの名前にしてもよいです。

「i」はfor文の中で今“何周目”かを示す、とても大切なカギです。データの順番や数を扱うときに、なくてはならない存在です!

配列やリストと一緒に使うfor文(拡張for含む)の使い分けができない

配列やリストには「普通のfor文」も「拡張for文」も使えますが、用途に合わせて使い分けるのがコツです。
普通のfor文は「添え字(index)」を使って順番を指定できます。一方、拡張for文は「順番に全部処理する」ことに特化しています。どちらも便利ですが、目的に応じて選ばないと、逆にコードが読みづらくなることもあります。
生徒の点数を表示するコードを見てみましょう。

【普通のfor文(添字でアクセス)】

int[] scores = {80, 90, 75, 60};
for (int i = 0; i < scores.length; i++) {
    System.out.println((i + 1) + "人目の点数: " + scores[i]);
}

このコードでは、誰の点数かを i を使って明示できます。

【拡張for文(全員を自動で処理)】

for (int score : scores) {
    System.out.println("点数: " + score);
}

この場合、「何人目か」はわからないけれど、とにかく全部の点数を表示できます。

【使い分けのポイント】

  • 番号や順番を使いたい → 普通のfor文
  • 要素の中身だけ使いたい → 拡張for文

【注意点】

  • 拡張for文では、ループの中で「元の配列の要素を変更する」ことはできません(要素の値は変更できない)
  • リスト(ArrayListなど)も同様に拡張forが使えますが、同じ制限があります

「どのfor文を使えば一番読みやすいか?」を意識することで、コードの見通しが良くなり、バグも減ります!

無限ループになって止まらなくなった経験があり、怖くて使えない

無限ループの原因を理解し、正しく条件を書くことで、for文は安心して使えるツールになります。
無限ループが起きるのは、終了条件が永遠に満たされないときです。たとえば、ループ変数を増やし忘れたり、条件がずっとtrueのままだったりすることで、for文が止まらなくなります。
次のコードを見てみましょう。

for (int i = 0; i < 10; ) {
    System.out.println("i: " + i);
}

これは「iを増やしていない」ため、i < 10 がずっとtrueのままになり、ずっと i: 0 が出力され続けます。
【よくある無限ループのパターン】

  • i++ を書き忘れて、ループが永遠に続く
  • 条件式が間違っていて、常にtrueになっている(例:i > 10 など)
  • break で止めるつもりだったが、条件が発生しない

【無限ループを防ぐためのポイント】

  • まず「必ず終わる」条件を確認する
  • i++ などの更新処理を忘れない
  • デバッグ時は System.out.println でループ回数を確認する
  • 一時的に break; を入れて強制停止も可能

【安全にテストする方法】

  • 開発中は条件を「i < 3」など、短い回数にして動きを確認する
  • EclipseやIntelliJのようなIDEでは、無限ループ時に強制停止ボタンがある

for文の無限ループは「理由がある」現象です。正しい更新と終了条件さえあれば、むしろとても安全なツールです!

forとwhileの違いや使い分けができない

or文とwhile文の違いは「繰り返し回数が決まっているかどうか」です。状況に応じて使い分けることで、コードはもっと読みやすくなります。
for文は「何回繰り返すか」が最初から分かっているときに使います。一方、while文は「いつ終わるか分からないけど、ある条件が満たされるまで繰り返したい」ときに使います。
たとえば、九九のように「9回繰り返す」ならfor文が適しています:

for (int i = 1; i <= 9; i++) {
    System.out.println("2 × " + i + " = " + (2 * i));
}

一方、ユーザーが「正解」と入力するまで繰り返したい場合はwhile文が向いています:

Scanner scanner = new Scanner(System.in);
String answer = "";
while (!answer.equals("正解")) {
    System.out.print("答えを入力してください: ");
    answer = scanner.nextLine();
}
System.out.println("正解です!");

【使い分けの目安】

  • 回数が決まっている:for文
  • 条件によって止めたい:while文

【補足:do-while文とは?】 do-while文は「最低1回は処理を実行したい」ときに使います:

int count = 0;
do {
    System.out.println("カウント: " + count);
    count++;
} while (count < 3);

「何回か」を先に決められるならfor文、「いつ終わるかわからないけど条件次第」ならwhile文。これを覚えるだけで、迷わず選べます!

まとめ

for文は初心者が最初につまずきやすい関門ですが、ポイントをおさえて順番に学べば必ず理解できます。

  • 構文は3つの要素(初期化・条件・更新)でできている
  • カウンタ変数は「今何回目か」を示す目印
  • 配列を使うときは普通のfor文か拡張for文を目的に応じて選ぶ
  • 無限ループは必ず原因があるので冷静に対処できる
  • for文とwhile文の違いを理解すれば、正しく使い分けられる

for文は「繰り返し」を理解するうえでとても大切な考え方です。このページの内容を何度も読み返して、手を動かして試していけば、必ず習得できます。

「なんとなく怖い」を「頼れる味方」に変えていきましょう!

タイトルとURLをコピーしました