【Java入門】while文の使い方!繰り返し処理(do whileなど)

Java Java

今回はJavaでwhile文を使って、繰り返し処理(ループ)をする方法について書いています。
また、while文の他にdo while文や、while文で使うbreak, continueなどの制御文についても書いています。

while文を使うことで、while文の配下の処理を繰り返すことができます。
載せているコードについては、OpenJDKのバージョン19で動作を確認しました。

while文の使い方

while文には条件式を指定することで、条件に合う間(trueになる)は処理を繰り返すことができます。
例えば、下記のように使います。

int i = 0;

while (i < 6) {
    System.out.println("変数iは「" + i + "」です。");
    i++;
}

最初に変数iに0を代入しています。

次の処理で、while文を使っています。
i < 6」と指定しているので、変数iが「6」未満の場合に処理を繰り返します。

while文の中では、変数iの値をメッセージと一緒に出力しています。
そして、変数iの値をカウントアップしています。

条件が変わらずに、条件がずっと合っている(true)の状態になると無限ループしてしまいます。
今回のようにカウントアップするなどして、処理を抜けるように気をつけましょう。

プログラムを実行すると、下記のように出力されました。

変数iは「0」です。
変数iは「1」です。
変数iは「2」です。
変数iは「3」です。
変数iは「4」です。
変数iは「5」です。

変数iが初期値の「0」から繰り返す(ループ)たびに、カウントアップされていることが確認できました。

while文でのbreakとは?

while文でbreakを使うと、breakを呼び出した瞬間に、繰り返し処理を抜けることができます。
例えば、下記のように使います。

int i = 0;

while (i < 6) {
    if (i == 3) {
        break;
    }
    System.out.println("変数iは「" + i + "」です。");
    i++;
}

最初に変数iに0を代入しています。

次の処理で、先ほどと同じように、変数iが「6」未満の間は繰り返すようにしました。
そして、変数iが「3」のときにbreakするようにしています。

そのため、「0」から「2」まで繰り返して、「3」で処理を抜けます。
プログラムを実行すると、下記のように出力されました。

変数iは「0」です。
変数iは「1」です。
変数iは「2」です。

変数iの値が「3」になったときに、breakが呼ばれて処理を抜けたことが確認できました。

while文でのcontinueとは?

while文でcontinueを使うと、continueを呼び出した瞬間に、繰り返し処理の先頭に戻って、処理を再開します。
例えば、下記のように使います。

int i = 0;

while (i < 6) {
    if (i == 2 || i == 4) {
        i++;
        continue;
    }
    System.out.println("変数iは「" + i + "」です。");
    i++;
}

先ほどと同じように、変数iが「6」未満の間は繰り返すようにしました。
繰り返し処理の中で、変数iが「2」または「4」だったら、カウントアップしてcontinueしています。

for文と違いカウントアップされないため、カウントアップするのを忘れたら、無限ループになってしまうので気をつけましょう。
これで、変数iが「2」または「4」のときには、繰り返し処理の先頭に戻ってくれます。

プログラムを実行すると、下記のように出力されました。

変数iは「0」です。
変数iは「1」です。
変数iは「3」です。
変数iは「5」です。

変数iの値が「2」または「4」のときには出力されていません。
変数iの値が「2」または「4」になったときに、continueが呼ばれてループの先頭に戻ったことが確認できました。

do while文とは?

do while文はwhile文に似ていますが、こちらは1度は必ず実行される処理を書くことができます。
例えば、下記のように使うことができます。

int i = 0;

do {
    System.out.println("変数iは「" + i + "」です。");
    i++;
} while (i < 6);

最初に変数iに0を代入しています。
次の処理でdo while文を使っています。

最初にdoを書いて、繰り返したい箇所を波括弧「{}」で囲みました。
値をメッセージと一緒に出力して、カウントアップしています。

最後に「i < 6」というように、条件を確認しています。
このため、変数iが「6」未満の間は繰り返されます。

プログラムを実行すると、下記のように出力されました。

変数iは「0」です。
変数iは「1」です。
変数iは「2」です。
変数iは「3」です。
変数iは「4」です。
変数iは「5」です。

変数iが「0」から「5」までの6回繰り返されたことが確認できました。

while文とは違うのか?

do while文の特徴は、繰り返し条件を最後に判定しているところです。
そのため、最初の1回は条件に合わないときでも、必ず実行されます。

例えば、先ほどのプログラムを下記のように修正します。

int i = 7;

do {
    System.out.println("変数iは「" + i + "」です。");
    i++;
} while (i < 6);

変数iに「7」を代入しています。
i < 6」で比べると、繰り返し条件に合いません。

while文だと実行されませんが、do while文のときには最初の1回は実行して判定します。
そのため、下記のように出力され、処理が終わります。

変数iは「7」です。

while文の無限ループ

while文の条件が、ずっと合う(trueになる)状態だと無限ループになります。
下記のように、意図的に無限ループを作ることができます。

while(true) {
    System.out.println("hello.");
}

このプログラムを実行すると、ずっと「hello.」が出力されてしまいます。
止める時は「Ctrl + c」を入力してください。

このように「true」になる条件が続くと、無限ループになってしまいます。
基本的には無限ループを使うことは少ないと思います。
条件が「true」を返し続けないように、気をつけていきましょう。

while文とfor文との違い

while文は条件式を書いてループするだけでしたが、for文の場合は「初期値」と「ステップ値」も記載することができます。

例えば、while文だと下記のように書きます。

int i = 0;

while (i < 3) {
    System.out.println("変数iは「" + i + "」です。");
    i++;
}

同じ処理をfor文で書くと、下記のようになります。

for (int i = 0; i < 3; i++) {
    System.out.println("変数iは「" + i + "」です。");
}

初期値(i = 0)とステップ値(i++)を一緒に書くことで、処理が見やすくなりましたよね。
そのため、バグが起こりにくくなると思うので、基本的にはfor文を使う方が安全ではないでしょうか。

while文で繰り返し処理をする方法まとめ

今回はJavaでwhile文を使って、繰り返し(ループ)処理をする方法を書きました。
記事の内容をまとめると、下記のようになります。

・while文を使うことで、繰り返し処理をすることができた。
・while文でbreakを使うことで、処理の途中で抜けることができた。
・while文でcontinueを使うことで、繰り返し処理の先頭に戻って再開できた。
・do while文を使うことで、必ず1回実行される繰り返し処理を書けた。
・while文よりfor文を使った方が、処理が見やすくなった。

コメント

タイトルとURLをコピーしました