whileループとdo…whileループの完全かつ包括的な解説
Javaにおけるwhile
ループとdo...while
ループは、反復処理を実行するための重要な制御構造です。これらのループは、指定された条件が満たされている限り、コードブロックを繰り返し実行しますが、動作の仕方にいくつかの違いがあります。本記事では、while
ループとdo...while
ループの基本的な使い方から、これらを活用するための実践的なテクニックに至るまで、完全に解説します。
1. whileループとは
while
ループは、指定された条件がtrue
である間、繰り返し処理を行います。while
ループの基本的な構文は次の通りです。

javawhile (条件) {
// 条件がtrueの場合に実行されるコード
}
while
ループが動作する仕組みは以下の通りです:
-
まず、条件式が評価されます。
-
条件式が
true
の場合、ループ内のコードが実行されます。 -
ループが終了するまで、条件式が再評価され、
true
であれば再びループが実行されます。 -
条件式が
false
になると、ループが終了します。
2. do…whileループとは
do...while
ループも同様に繰り返し処理を行いますが、while
ループとは異なり、条件がfalse
であっても最低1回はループ内のコードが実行されます。do...while
ループの基本的な構文は次の通りです。
javado {
// 少なくとも1回は実行されるコード
} while (条件);
do...while
ループが動作する仕組みは以下の通りです:
-
まず、ループ内のコードが実行されます。
-
実行後に条件式が評価され、
true
であれば再度ループが実行されます。 -
条件式が
false
になると、ループが終了します。
do...while
ループの特徴的な点は、少なくとも1回は処理が実行されるということです。
3. whileループとdo…whileループの違い
while
ループとdo...while
ループは似ていますが、重要な違いがあります。それは、ループの実行回数に関する違いです。
-
whileループ: 条件が
false
の時点で一度も実行されない場合があります。つまり、条件が最初からfalse
であれば、ループ内のコードは一度も実行されません。 -
do…whileループ: 条件が
false
でも、ループ内のコードは必ず1回実行されます。最初の評価後に条件がfalse
の場合、次回の実行時には終了します。
4. 実際の使用例
4.1. whileループの例
以下のコードは、1から10までの数字を出力するwhile
ループの例です。
javapublic class WhileExample {
public static void main(String[] args) {
int i = 1;
while (i <= 10) {
System.out.println(i);
i++;
}
}
}
このプログラムでは、変数i
が1から10まで増加し、各値が出力されます。i
が11に達すると、条件がfalse
となり、ループは終了します。
4.2. do…whileループの例
次に、do...while
ループを使用して、同じく1から10までの数字を出力する例を示します。
javapublic class DoWhileExample {
public static void main(String[] args) {
int i = 1;
do {
System.out.println(i);
i++;
} while (i <= 10);
}
}
このプログラムでは、do
ブロックが必ず1回実行され、条件式が評価されます。i
が1から10まで増加する間、各値が出力され、条件がfalse
になるとループが終了します。
5. whileループとdo…whileループの選び方
どちらのループを使用するかは、状況によります。
-
whileループ: 反復処理を行う前に、条件が満たされていない場合に一度も実行しないという要件がある場合に使用します。例えば、条件が最初から
false
の場合にループを回さない場合などです。 -
do…whileループ: 少なくとも1回は処理を行いたい場合に使用します。例えば、ユーザーからの入力を受け付けて、その後に確認を行う場合など、最初の入力は必ず行う必要があるケースに適しています。
6. 無限ループに注意
while
ループやdo...while
ループは、条件が常にtrue
である限り、無限にループし続ける可能性があります。無限ループを避けるためには、条件を適切に管理する必要があります。
例えば、以下のように無限ループを防ぐためには、i
を適切に増加させる必要があります。
javapublic class InfiniteLoopExample {
public static void main(String[] args) {
int i = 1;
while (i <= 10) {
System.out.println(i);
// iをインクリメントしないと無限ループに陥る
}
}
}
このコードは、i++
がないため、無限ループになります。無限ループを避けるためには、条件式が必ずfalse
になるように、ループ内で変数の更新を忘れずに行うことが重要です。
7. まとめ
while
ループとdo...while
ループは、Javaにおける基本的な繰り返し処理の制御構造です。while
ループは条件が最初から満たされていない場合に実行されない可能性がありますが、do...while
ループは必ず1回は実行されるという特性があります。これらのループは、プログラムのロジックに応じて使い分けることが重要です。反復処理を行う際には、ループの条件式や変数の管理に注意を払い、無限ループを避けるようにしましょう。