Java while文

while文は、ブール値の条件が真である限り、コードのブロックを繰り返すことができる制御フロー文です。for文と似ていますが、for文とは異なり、反復の回数はあらかじめ決められていません。

Java while文の仕組み

以下は、Javaのwhileループの構文です。

while (predicate) {
    // 実行されるコードブロック
}

述語は、任意のブーリアン式を指定できます。条件が真であれば、whileループ内のコードブロックが実行されます。コードブロックが実行されると、条件が再びチェックされます。もし条件がまだ真であれば、コードブロックが再び実行されます。この処理は条件が偽になるまで続けられ、その時点でwhileループが終了し、プログラムの次のステートメントに制御が渡されます。

それでは例を見てみましょう。

int count = 1;

while (count <= 10) {
    System.out.println("Count is: " + count);
    count++;
}

この例では、whileループが10回実行され、そのたびにcountの値が1ずつ増えていきます。

Java while文による無限ループ

無限ループとは、ループの条件が常に真であるため、無限に実行されるループのことです。無限ループは、プログラムがクラッシュしたり、利用可能なリソースをすべて消費してパフォーマンスが低下したりするため、一般にプログラミングエラーとみなされます。

以下は、Javaにおける無限ループの例です。

while (true) {
    // 実行されるコードブロック
}

この例では、ループの条件は常に真なので、ループ内のコードブロックは無限に実行されることになります。

Java do-while文

Javaでは、do-whileループは、ブール値の条件が真である限り、コードのブロックを繰り返すことができる制御フロー文です。whileループと似ていますが、ループの最初ではなく最後に条件を確認するため、do-whileループ内のコードブロックは少なくとも一度は実行されることが保証されている点が異なります。

以下は、Javaのdo-whileループの構文です。

do {
    // 実行されるコードブロック
} while (predicate);

do-whileループ内のコードブロックが最初に実行され、その後、条件がチェックされます。条件が真であれば、コードブロックが再び実行されます。この処理は条件が偽になるまで続けられ、その時点でdo-whileループは終了し、プログラム内の次の文に制御が渡されます。

それでは例を見てみましょう。

int count = 1;

do {
    System.out.println("Count is: " + count);
    count++;
} while (count <= 10);

また、do-whileループの中でbreak文とcontinue文を使用することも可能です。break文はループを即座に終了させ、continue文は現在の反復処理の残りをスキップして次のループに移行させます。

Java continueを使った例

以下は、Javaのwhileループ内でcontinue文を使用する例です。

int count = 1;

while (count <= 10) {
    if (count % 2 == 0) {
        count++;
        continue;
    }
    System.out.println("Count is: " + count);
    count++;
}

この例では、whileループが1から10までの値を繰り返し処理します。continue文は、countの値が偶数である場合に、現在の反復処理の残りをスキップするために使用されます。

Java breakを使った例

以下は、Javaでdo-whileループの中でbreak文を使用する例です。

int count = 1;

do {
    if (count == 5) {
        break;
    }
    System.out.println("Count is: " + count);
    count++;
    } while (count <= 10);

この例では、do-whileループは1から10までの値を繰り返し処理します。countの値が5になったらbreak文を使ってループを終了させます。

while文の練習については、CS基礎/中級/制御フローで詳しく学習できます。

この記事を書いた人

著者の画像

Jeffry Alvarado

Ex-Facebook Engineer 大学ではコンピュータサイエンスを専攻し、在学中に複数のインターンシップを経験。コンピュータサイエンスが学習できるプラットフォームRecursionを創業し、CTOとしてカリキュラム作成、ソフトウェア開発を担当。


ツイート