Java制御文(Control statement)の繰り返し文(Loop Control)

繰り返し文(Loop Control)

Javaには、forwhiledo-while文と、J2EE 5.0で追加されたfor~each文があります。繰り返し文は、指定された文を条件が満たされるまで繰り返します。条件の指定方法によって、forwhiledo-whilefor~each文を使い分けます。繰り返す文が1文だけの場合はブロックにしなくてもかまいませんが、2文以上の場合は中括弧({ })を使ってブロックとして指定する必要があります。

for

for文は、与えられた初期値を開始点として、条件を満たしている間forブロックを繰り返し実行する命令文です。

for (初期値; 条件式; 増減値) {
   繰り返し実行文;
}

for文が開始されると、初期値の部分は一度だけ実行されます。次に条件式が実行されますが、この条件式は必ずboolean式でなければなりません。この条件式がfalseになると、繰り返し文は終了します。増減値には、繰り返し制御変数を増加または減少させる式が入ります。最初に条件式が実行された後、実行文が実行され、増減値が実行された後に再び条件式が実行され、実行文が繰り返されます。

次は1から100までの合計を求める例です。

package com.devkuma.tutorial.control.statement;

public class For1 {

    public static void main(String[] args) {

        int sum = 0;

        for (int i = 1; i <= 100; i++) {
            sum += i;
        }

        System.out.println("sum=" + sum);
    }
}

for文の初期値、条件式、増減値で複数の文を並べたい場合は、カンマ(,)を使って宣言できます。

次の2つの例は同じ結果を出力します。

package com.devkuma.tutorial.control.statement;

public class For2 {

    public static void main(String[] args) {

        int a, b;
        b = 4;

        for (a = 1; a < b; a++) {
            System.out.println("a=" + a + ", b=" + b);
            b--;
        }
    }
}
package com.devkuma.tutorial.control.statement;

public class For3 {

    public static void main(String[] args) {

        int a, b;

        for (a = 1, b = 4; a < b; a++, b--) {
            System.out.println("a=" + a + ", b=" + b);
        }
    }
}

for ~ each

JDK 1.5で、for文の別形式であるfor~each文が追加されました。

for~each文は、コレクション型(collection type)のデータに存在する要素の数だけ繰り返し実行する命令文です。

for (変数 : コレクション) {
    繰り返し実行文;
}

次の例は、配列とコレクション型のデータを使った例です。

package com.devkuma.tutorial.control.statement;

import java.util.ArrayList;
import java.util.List;

public class ForEach {

    public static void main(String[] args) {

        String array[] = { "A", "B", "C" };
        for (String a : array) {
            System.out.println("a=" + a);
        }

        List<String> list = new ArrayList<String>();
        list.add("A");
        list.add("B");
        list.add("C");
        for (String l : list) {
            System.out.println("l=" + l);
        }
    }
}

while

while文は、条件節が真である間、whileブロックを繰り返し実行します。

while (条件式) {
    繰り返し実行文;     
}

while文を使った例は次のとおりです。

package com.devkuma.tutorial.control.statement;

public class While {

    public static void main(String[] args) {

        int sum = 0;
        int i = 1;
        while (i <= 100) {
            sum += i;
            i++;
        }

        System.out.println("sum=" + sum);
    }
}

do ~ while

少なくとも一度は実行される繰り返し文です。

do {
    繰り返し実行文;  
} while (条件式)

do ~ while文を使った例は次のとおりです。

package com.devkuma.tutorial.control.statement;

public class DoWhile {

    public static void main(String[] args) {

        int sum = 0;
        int i = 1;
        do {
            sum += i;
            i++;
        } while (i <= 100);

        System.out.println("sum=" + sum);
    }
}

while文とdo ~ while文の違いは、条件式をいつ確認するかです。