for文の中にfor文を記述

広告

for文で実行されるブロックの中には様々な文を記述することができますので他のfor文を記述することができます。次の例を見て下さい。

for (int i = 0; i < 2; i++){
  for (int j = 0; j < 2; j++){
    System.out.println("i = " + i + ",j = " + j);
  }
}

この例では外側のfor文のブロック内に別のfor文を記述しています。ではこのサンプルがどのように実行されるのか確認してみます。

 1)変数「i」を宣言し、0で初期化する

 2)外側の条件式を評価し繰り返しを実行する
 3)変数「j」を宣言し、0で初期化する
 4)内側の条件式を評価し繰り返しを実行する
 5)「i = 0,j = 0」を出力
 6)変化式によって変数「j」の値を1にする
 7)内側の条件式を評価し繰り返しを実行する
 8)「i = 0,j = 1」を出力
 9)変化式によって変数「j」の値を2にする
10)内側の条件式を評価し内側のfor文を終了する
11)変化式によって変数「i」の値を1にする

12)外側の条件式を評価し繰り返しを実行する
13)変数「j」を宣言し、0で初期化する
14)内側の条件式を評価し繰り返しを実行する
15)「i = 1,j = 0」を出力
16)変化式によって変数「j」の値を1にする
17)内側の条件式を評価し繰り返しを実行する
18)「i = 1,j = 1」を出力
19)変化式によって変数「j」の値を2にする
20)内側の条件式を評価し内側のfor文を終了する
21)変化式によって変数「i」の値を2にする

22)外側の条件式を評価し外側のfor文を終了する

長くなっていますが、2)から11)までが外側のfor文の1回目の繰り返し処理、12)から21)までが外側のfor文の2回目の繰り返し処理となります。そして外側のfor文が1回回るたびに内側のfor文が繰り返し実行されることになります。

2つの変数の値をそれぞれ範囲内で変化させ、総当りの組み合わせで処理を行いたい場合に使われます。

サンプル

では簡単な例で試しておきます。

JSample5_1.java

class JSample5_1{
  public static void main(String args[]){
    for (int i = 1; i <= 9; i++){
      for (int j = 1; j <= 9; j++){
        System.out.println(i + " × " + j + " = " + (i * j));
      }
    }
  }
}

コンパイル後に実行すると次のように表示されます。

p5-1

数が多いので全部は表示されていませんが九九を順に表示させています。

( Written by Tatsuo Ikura )