Javaのwhileループを使いこなす!無限ループの作り方も説明。

Javaのwhileループを使いこなす!無限ループの作り方も説明。

この記事では、Javaのwhileループの使い方をサンプルコードを用いて説明していく。

whileループはforループと比較すると使われる場面が若干少ないかもしれないが、Javaを学ぶならぜひ覚えておきたい基本的なオペレーションのひとつだ。この記事では、応用的なwhileループの使い方も紹介するので中級者以上の人も最後まで目を通して欲しい。

では、見ていこう!

なお、for文についてはこちらの記事で説明しているので参考にしてほしい。

UgoCompiler

当サイトでは、自作のJavaCompiler「UgoCompiler」を用意している。UgoCompilerを使えばオンライン上で気軽に自分の書いたコードを実行することができる。 登録なしですぐに使うことができるので、ぜひ試してみてほしい! (下の写真をクリックすると新しいタブで開きます。)

whileループとは?

whileループはある処理を反復したい時に使用する制御構造で、ブーリアンの値により処理の継続・中断を決定する。

while文の使い方

では、while文の使い方をサンプルコードと共に見ていこう。

public static void stopByOneHundred() {
int i = 0;
while(i < 100) {
i += new Random().nextInt(10);
System.out.println(i);
}
}

continue

ループの処理の中で一定の条件により処理をスキップしたい場合はcontinueを使用する。

break

ある条件下でwhileループの処理を完全に中断したい場合はbreakを使用する。

breakはプログラミング言語によっては「exit」と表される。

private static void whileWithContinueAndBreak() {
    int i = 0;
    while(i < 100) {
        i++;
        if (i % 2 == 1) continue;
        System.out.println(i);
        if (i == 20) break;
    }
}

nextを使ったイテレーション

while文はイテレーター(Iterator)と一緒に使われることも多い。イテレーターは配列構造にあるオブジェクトを順に格納するオブジェクトだ。

ここでは、ArrayListを使ったIteratorの使用例を紹介しておく。

private static void iterateArrayList() {
    ArrayList<String> nameList = new ArrayList<String>(
            Arrays.asList("Fuse Kameyo", "Aki Michi", "Fujimori Aki", "Kawamoto Momoko", "Itoh Kimi"));
    
    Iterator iterator = nameList.iterator();
    while (iterator.hasNext()) {
        System.out.println(iterator.next());
    }
}

ループの周期に使われる。

無限ループの作り方

Javaで無限ループを作る際は以下のようなコードを記述すればいい。

private static void infiniteLoopWithWhile() {
    while(true) {
        System.out.println("ここに指示を記述する。");
        try{
            Thread.sleep(30000);
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

これによって30秒ごとに決まった処理を実行するような無限にループするプログラムを実装することが可能だ。

do-while文の使い方

do-while文はwhile文のバリエーションでwhile文とは違った構文を持つ。

boolean isConnected = false;
do {
    System.out.println("");
} while (isConnected);

while文とdo-while文の違い

do-while文はwhile文と違い、必ず一度doのカッコ内に書かれた処理が実行される。

public static void whileDoWhileDifference() {
    int i = 5;
    do {
        System.out.println("指示を実行します。do-whileループ");
    } while(i < 5);

    int j = 5;
    while(j < 5) {
        System.out.println("指示を実行します。whileループ");
    }
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.Random;

class WhileLoopExample {

    public static void main(String[] args) {
        WhileLoopExample.stopByOneHundred();
        WhileLoopExample.whileWithContinueAndBreak();
        // WhileLoopExample.infiniteLoopWithWhile();
        WhileLoopExample.iterateArrayList();
        WhileLoopExample.whileDoWhileDifference();
    }

    // whileループの例。
    public static void stopByOneHundred() {
        int i = 0;
        while(i < 100) {
            i += new Random().nextInt(10);
            System.out.println(i);
        }
    }

    // continueとbreakを使ったwhileループの例
    private static void whileWithContinueAndBreak() {
        int i = 0;
        while(i < 100) {
            i++;
            if (i % 2 == 1) continue;
            System.out.println(i);
            if (i == 20) break;
        }
    }

    // 無限ループの例
    private static void infiniteLoopWithWhile() {
        while(true) {
            System.out.println("ここに指示を記述する。");
            try{
                Thread.sleep(30000);
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }

    // ArrayListを使ったIteratorの例
    private static void iterateArrayList() {
        ArrayList<String> nameList = new ArrayList<String>(
                Arrays.asList("Fuse Kameyo", "Aki Michi", "Fujimori Aki", "Kawamoto Momoko", "Itoh Kimi"));

        Iterator iterator = nameList.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }

    // do-whileとwhileの違いを見せるための例。
    public static void whileDoWhileDifference() {
        int i = 5;
        do {
            System.out.println("指示を実行します。do-whileループ");
        } while(i < 5);

        int j = 5;
        while(j < 5) {
            System.out.println("指示を実行します。whileループ");
        }
    }
}