【Java】繰り返し処理 while構文
繰り返し処理を行う構文には2種類あり、for構文とwhile構文があります。
ここではwhile構文の説明をします。
1.while構文とは?
while構文とは、for構文と同様に繰り返し処理を行う構文です。
for構文との違いは、繰り返す回数が決まっている場合はfor構文を、決まっていない場合はwhile構文を使います。
2.while構文の形
while構文の基本形は以下です。
while(条件式){
処理;
}
条件式が真(true)であれば処理を繰り返し、偽(false)であれば繰り返し処理が終了します。
なお、上は簡単な形ですが、実際は以下のように用います。
カウント用変数の宣言と初期化;
while(条件式){
処理;
ループ処理;
}
- カウント用変数の宣言と初期化
繰り返し処理のための変数を宣言し、初期値を設定します。 - 条件式
カウント用変数の値に対する条件式です。カウント用変数が条件に合致(true)すれば処理を実行し続け、合致しなければ(falseならば)繰り返し処理を終了します。 - ループ処理
1回の繰り返し終了時に、どのくらいの数値をカウント用変数にプラス(場合によってはマイナスなど)するか?を決めるものです。
具体的な用い方は以下です。
int i = 0;
while(i <= 4){
System.out.println(i);
i++;
}
カウント用変数「i」の初期値を0とし、条件式を「i <= 4」、ループ処理で1回処理が行われるごとに変数iをプラス1します。
繰り返し回数 | カウント用変数の値 | 説明 |
---|---|---|
1回目 | 0 |
変数「i」の値は0で条件式「i <= 4」はtrueです。処理が実行されて変数iはプラス1されて1になります。 |
2回目 | 1 | 変数「i」の値は1で条件式「i <= 4」はtrueです。処理が実行されて変数iはプラス1されて2になります。 |
3回目 | 2 | 変数「i」の値は2で条件式「i <= 4」はtrueです。処理が実行されて変数iはプラス1されて3になります。 |
4回目 | 3 | 変数「i」の値は3で条件式「i <= 4」はtrueです。処理が実行されて変数iはプラス1されて4になります。 |
5回目 | 4 | 変数「i」の値は4で条件式「i <= 4」はtrueです。処理が実行されて変数iはプラス1されて5になります。 |
6回目 | 5 | 変数「i」の値は5で条件式「i <= 4」はfalseです。ここで繰り返し処理は終了です。 |
上記プログラムを実行すると、以下のようになります。
C:\Users\ysk\Desktop\java>java Lesson
0
1
2
3
4
3.「break;」と「continue;」
for構文と同様で、while構文でも繰り返し処理を終了する「break;」と繰り返し処理をスキップする「continue;」が利用できます。
その使用方法ですが、全く一緒なのでfor構文を参照してください。
4.do~while構文
while構文には「do~while」構文というものがあります。
while構文は最初に条件判定を行いtrueであれば処理を実行しますが、do~while構文は処理を実行したあとに次の処理のための条件判定を行います。
do~whileの形は以下です。
do{
処理;
}
while(条件式);
while構文だと、最初の条件判定でfalseだった場合、一度も処理を実行することなく終了になりますが、do~while構文だと最低1回は処理を実行します。
簡単なプログラムを書くと以下です。
int i = 0;
do{
System.out.println(1);
i++;
}
while(i < 5);
5.繰り返しを一気に終了させるラベル
繰り返し処理を終了させるには「break;」文を使いますが、以下のようにwhile構文の中にwhile構文を入れている場合、内側にあるwhileしか処理が終了されません。
while(条件式1){
処理1;
while(条件式2){
処理2;
break;
}
}
しかし終了させたいwhile構文の前に「ラベル」を設置すると、そのwhile構文を終了させることができます。
LABEL;
while(条件式1){
処理1;
while(条件式2){
処理2;
break LABEL;
}
}
この場合、「break Label;」が実行されると、「while(条件式1)」の繰り返し処理が終了され、一気に2つのwhile構文が終了します。
while構文の中にwhile構文を、そしてその中にwhile構文を、それまたwhile構文を・・・といった場合でも、任意のwhile構文の前にラベル名を設置すると、そのwhile構文とそのブロックの中にある処理は終了します。
なお、ラベル名は上では「LABEL」としましたが、ラベル名は任意の名前で構いません。ただし、全て大文字にしておけば、どこにラベルがあるかわかりやすくなります。
コメント
まだコメントはありません。