Java制御文(Control statement)の繰り返し文(Loop Control)
繰り返し文(Loop Control)
Javaには、for、while、do-while文と、J2EE 5.0で追加されたfor~each文があります。繰り返し文は、指定された文を条件が満たされるまで繰り返します。条件の指定方法によって、for、while、do-while、for~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文の違いは、条件式をいつ確認するかです。