こんにちは!フリーランスの長野です。
Javaのwhile文って使っていますか?
ある条件がtrueであれば処理を繰り返し続けたい場合に使用します。
また「do-while」構文で使用したり、「break」句や「continue」句を使って必要のない処理を省略することもできます。
この記事では、while文について
・while文とは
・while文の使い方
・do-while文の使い方
という基本的な内容から、
breakやcontinueを使って
・ループを制御する方法
など応用的な内容についても解説していきます。
今回はwhile文について、使い方をわかりやすく解説します!
なお、Javaの記事については、こちらにまとめています。
while文とは
while文とは冒頭でも述べましたが、条件がtrueの場合に処理が繰り返されます。
条件が変わらなければ処理をし続けることになりますが、条件が変わった(falseになった)時点で処理を終了します。
そのため、条件がtrueの場合は延々と処理を繰り返してしまうことになります。
そんな場合に「break」句でループを抜けたり、「continue」句を使って不要な処理をスキップするなどの処理の制御を行います。
これらの使い方について詳しく説明していきます。
while文の使い方
while文は以下のように記述します。
while(条件式) {処理}
サンプルコードで確認していきましょう。
public class Main { public static void main(String[] args) { int i = 0; while (i < 3) { System.out.println((i + 1) + "回目の処理です"); i++; } System.out.println("処理が終了しました"); } }
実行結果:
1回目の処理です 2回目の処理です 3回目の処理です 処理が終了しました
このサンプルコードではint型の変数「i」が3未満であれば処理を繰り返します。
1回ごとの処理で変数「i」に1ずつ加算する処理を行っていますので、3回処理を繰り返すと条件を満たさなくなり、while文の繰り返しループを抜けて全ての処理が終了します。
ちなみに、while文は条件式が初めからfalseの場合にはブロック内の処理は1度も行われず、ブロック外の次の処理に移行します。
do-while文の使い方
次にdo-while文の使い方をみていきましょう。
do-while文は以下のように記述します。
do {処理} while (条件式);
while文とdo-while文の違いは、条件式が初めからfalseの場合にwhile文ではブロック内の処理が1度も行われないのに対して、do-while文ではブロック内の処理が1度は行われる点です。
do-while文の使い方をサンプルコードで確認していきましょう。
public class Main { public static void main(String[] args) { int i = 0; do { System.out.println((i + 1) + "回目の処理です"); i++; } while (i < 3); System.out.println("処理が終了しました"); } }
実行結果:
1回目の処理です 2回目の処理です 3回目の処理です 処理が終了しました
do-while文の場合は処理を先に記述し、繰り返しの条件を処理の後に記述します。
ループを制御する方法
「break」句を使ってループを抜ける方法や、「continue」句を使って処理をスキップする制御方法についてみていきましょう。
breakでループを抜ける方法
「break」句に到達すると、ループ内のそれ以降の処理は行わずにループ外の次の処理に移ります。
サンプルコードで確認していきましょう。
public class Main { public static void main(String[] args) { int i = 0; while(i < 5){ if ((i + 1) > 3){ break; } System.out.println((i + 1) + "回目の処理です"); i++; } System.out.println("処理が終了しました"); } }
実行結果:
1回目の処理です 2回目の処理です 3回目の処理です 処理が終了しました
このサンプルコードのwhile文の条件では、int型の変数「i」が5未満であれば処理を繰り返します。
しかし実行結果を確認すると途中で処理が行われなくなり、ループ外の処理に移行しています。
これは変数「i」が「i + 1 > 3」の条件を満たし「break」句に達したためで、それ以降のループ内の処理は実行されていません。
continueで処理をスキップする方法
「continue」句に到達するとそれ以降のループの処理は行われず、ループの最初の処理から再び実行されます。
サンプルコードで確認していきましょう。
public class Main { public static void main(String[] args) { int i = 0; while(i < 5){ i++; if (i < 3){ continue; } System.out.println(i + "回目の処理です"); } System.out.println("処理が終了しました"); } }
実行結果:
3回目の処理です 4回目の処理です 5回目の処理です 処理が終了しました
このサンプルコードでint型の変数「i」の「i < 3」という条件を満たす間はループ内の「continue」句以降の処理は行われず、ループ内の最初の処理に戻っています。
変数「i」の「i < 3」という条件を満たさなくなると、ループ内のそれ以降の処理も実行されています。
while文の「i < 5」という条件を満たさなくなると、ループ外の処理を実行し最後まで処理が実行されています。
まとめ
ここでは、while文の使い方について説明しました。
while文を使う場合は条件を満たしたあとに必要のない処理を行わないように、「break」句や「continue」句と組み合わせて適切に制御する必要があります。
「break」句や「continue」句とあわせて使いこなすことができるように、この記事を何度も参考にして下さいね!