[Java] 同じ処理を繰り返すwhileループの書き方

By | 2017年3月20日

前回は、同じ処理を繰り返し行う際に便利な for文 について紹介しました。

Javaで繰り返し処理に使える構文はもうひとつあります。

whileループ

ある条件が true である場合にループ処理を実行するのが while文 です。

書き方は for文 よりも単純です。

while (ループを実行するかどうかboolean値) {
 
    // ここに繰り返し行いたい処理
 
}

具体的な while文 の使用例を紹介します。

以下は、キーボードから 0 と入力されるまで、キーボードから値を入力させ続けるプログラムです。

import java.util.Scanner;

public class Test {
 
    public static void main(String args[]) {
 
        System.out.print("整数値を入力してください(0で終了): ");
 
        Scanner scan = new Scanner(System.in);

        int inputValue = scan.nextInt();
 
        // inputValue が 0 でなければループ
        while (inputValue != 0) {
 
            System.out.println("入力された値は" + inputValue + "でした");
 
            System.out.print("再び整数値を入力してください(0で終了): ");
            inputValue = scan.nextInt();
        }
 
        scan.close();
  
        System.out.println("終了します");
    }
}

実行結果です。0 が入力され、条件が false になるまでプログラムが実行され続けます。

条件が満たされるまで終了しないwhileループ

最低一回は処理を実行する do-while

while文 は、条件部分「ループを実行するかどうかboolean値」が初めから false であった場合、一度もループ内の処理を実行しません。

先ほどのプログラムを以下のように書き換えた場合、変数 inputValue の初期値は 0 なので、whileループの処理が一度も実行されません。

import java.util.Scanner;

public class Test {
 
    public static void main(String args[]) {
  
        Scanner scan = new Scanner(System.in);
 
        int inputValue = 0;
 
        // inputValue が 0 でなければループ
        while (inputValue != 0) {
 
            System.out.print("整数値を入力してください(0で終了): ");
            inputValue = scan.nextInt();

            System.out.println("入力された値は" + inputValue + "でした");
        }
 
        scan.close();
  
        System.out.println("終了します");
    }
}

条件に関わらず、初めの一回はループ内の処理を実行してほしいという場合は、do-while文 を使用します。

do-while文 の書き方は以下の通りです。

do {
    // ここは一度実行され、2度目以降は条件を満たした場合のみ実行される
} while (ループを実行するかどうかboolean値);

do-while文 の具体的な使用例を以下に示します。

import java.util.Scanner;

public class Test {
 
    public static void main(String args[]) {
  
        Scanner scan = new Scanner(System.in);
 
        int inputValue = 0;
 
        // 2回目以降に inputValue が 0 でなければループ
        do {
  
            System.out.print("整数値を入力してください(0で終了): ");
            inputValue = scan.nextInt();

            System.out.println("入力された値は" + inputValue + "でした");

        } while (inputValue != 0);
 
        scan.close();
  
        System.out.println("終了します");
    }
}

このプログラムの実行結果です。

do-while文によるループ処理のプログラム

無限ループに注意

for や while の 「ループを実行するかどうかboolean値」 の部分を、絶対に false にならないものにしてしまった場合、処理が永遠に終わらない無限ループに陥ります。

こうなってしまった場合、プログラムを強制終了させるしかありません。

例えば、次のようなwhileループです。「ループを実行するかどうかboolean値」の部分に直接 true を書いています。

while (true) {
  // !ここは永遠に実行され続ける
}

これは極端な例ですが、条件部分がこのような状態になるループを作らないよう気をつけましょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*