入門 ブラウザ 約15分

for文で同じ処理をくり返す

for 文の基本形を使い、同じ処理を回数指定でくり返すコードを読めるようにするレッスン。

「1 から 5 まで順番に表示したい」。今までの書き方だと System.out.println を5回書くことになります。for 文を使うと、それを数行で済ませられます。

実行環境は引き続きブラウザ上のもの(paiza.IOOneCompiler)です。

5回書くとこうなる

まずは for 文を使わずに書いてみます。

public class Main {
  public static void main(String[] args) {
    System.out.println(1);
    System.out.println(2);
    System.out.println(3);
    System.out.println(4);
    System.out.println(5);
  }
}
1
2
3
4
5

動きますが、数が増えたら現実的ではありません。100回なら100行書くことになります。

for 文で書き直す

同じ結果を for 文で書くとこうなります。

public class Main {
  public static void main(String[] args) {
    for (int i = 1; i <= 5; i++) {
      System.out.println(i);
    }
  }
}
1
2
3
4
5

5行あった println が2行になりました。しかも 5100 に変えれば、そのまま100回くり返せます。

for 文の3つの部分

for (int i = 1; i <= 5; i++) は、;(セミコロン)で3つに区切られています。

部分コード意味
初期化int i = 1カウンタ変数 i1 から始める
条件i <= 5i が 5 以下のあいだくり返す
更新i++1回の実行が終わるたびに i を 1 増やす

ループの構造を図にするとこうなります。

flowchart TD
  A["初期化: int i = 1"] --> B["条件: i <= 5 ?"]
  B -->|true 成立| C["処理: println(i)"]
  C --> D["更新: i++"]
  D --> B
  B -->|false 不成立| E["ループ終了"]

実際の値の変化を追うと、こうなります。

i = 1 → 条件 OK → println(1) → i を 2 に
i = 2 → 条件 OK → println(2) → i を 3 に
i = 3 → 条件 OK → println(3) → i を 4 に
i = 4 → 条件 OK → println(4) → i を 5 に
i = 5 → 条件 OK → println(5) → i を 6 に
i = 6 → 条件 NG → ループ終了

i++i = i + 1 の省略形です。「i を 1 増やす」と読んでください。

くり返しの範囲を変える

開始と終了を変えるだけで、くり返しの範囲をコントロールできます。

public class Main {
  public static void main(String[] args) {
    for (int i = 3; i <= 7; i++) {
      System.out.println(i);
    }
  }
}
3
4
5
6
7

int i = 3 で開始を 3 に、i <= 7 で終了を 7 に変えました。変えたのは初期化と条件だけで、構造は同じです。

for と if を組み合わせる

for 文の中に if 文を入れると、「くり返しの中で条件を満たす場合だけ処理する」ことができます。

public class Main {
  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)だけを表示しています。前回の if 文と、その前の % がここでつながりました。

次の回へ

次はメソッドを使って「処理を名前のついたまとまりに分ける」方法を見ます。for 文でくり返す処理が増えてきたとき、メソッドに分けると読みやすくなります。