[PR] 迷惑メール トップページプロ3ゼミJavaJava入門講座一学期単位4 →3時間目

3時間目 while文及びdo〜while文

4−3−1.while文

 while文は、for文と同じで処理を繰り返します。
while文にも「()」がありますが、ここに記述するは終了条件だけです。
よって、構文は以下のようになります。

while (条件)
    文;

 for文と比べると非常にシンプルだと言う事が分かります。
while文は条件だけを記述する事から分かるように、for文で言う初期化するにはwhile文の中ではなく前にしなけ ればいけません。
これは、前に宣言する又は宣言されている変数を使う事から(終了条件が)不確定な繰り返しに使用します。
もちろん決まりは無く、for文に記述しても問題ありません(while文の中には終了条件しかありませんが)。

Sample4_3_1をご覧下さい。
Sample4_3_1.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Sample4_3_1 {

    public static void main(String[] args) {

        new While().view();
    }
}

class While {

    public void view() {

        System.out.print("for文    −>");
        for (int i = 0; i < 10; i++) {
            System.out.print(i + " ");
        }
        System.out.println();

        System.out.print("while文−>");
        int i = 0;                                              // while文の場合は前に宣言
        while (i < 10) {
            System.out.print(i + " ");
            i++;
        }
        System.out.println();

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        try {
            System.out.print("文字列を入力してください(endで終了です)−>");
            String str = br.readLine();
            while (!str.equals("end")) {
                System.out.println("入力された文字は" + str + "です。");
                System.out.print("文字列を入力してください(endで終了です)−>");
                str = br.readLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
for文    −>0 1 2 3 4 5 6 7 8 9 
while文−>0 1 2 3 4 5 6 7 8 9 
文字列を入力してください(endで終了です)−>サンプル入力
入力された文字はサンプル入力です。
文字列を入力してください(endで終了です)−>エンド
入力された文字はエンドです。
文字列を入力してください(endで終了です)−>end

 Sample4_3_1では、for文とwhile文でそれぞれ10回表示しました。
その下にあるサンプルがwhile文の特徴である不特定回数の繰り返し例です。
for文でも実現できますがwhile文の方がシンプルで分かりやすいです。
他のプログラマが見てもfor文を使っている時は固定の繰り返しでwhile文を使っている時は不定の繰り返しと 言う事が分かりやすいでプログラミングに慣れてきたら使い分けてみると良いでしょう。

4−3−2.do〜while文

 do〜while文はwhile文と同じように「()」には終了条件だけを指定します。
但し、do〜while文は最低でも1回だけ実行します。
構文は、以下のようになっています。
do
    文;
while (終了条件);
実際にプログラム(Sample4_3_2)をご覧下さい。
Sample4_3_2.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Sample4_3_2 {

    public static void main(String[] args) {

        new DoWhile().view();
    }
}

class DoWhile {

    public void view() {

        // do〜while文で10回繰り返す
        System.out.print("do〜while文−>");
        int i = 0;
        do {
            System.out.print(" "+ i);
            i++;
        } while (i < 10);
        System.out.println();

        // 整数が入力するまで繰り返す
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        try {
            int number = -1;
            boolean flag = false;                               // 判定
            do {
                System.out.print("整数を入力して下さい−>");
                String str = br.readLine();
                try {
                    number = Integer.parseInt(str);             // 文字列を整数に変換
                    flag = true;
                } catch (NumberFormatException e) {
                    // 整数に変換できなかった場合
                    flag = false;
                }
            } while (!flag);
            System.out.println("入力された整数は" + number + "です。");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
do〜while文−> 0 1 2 3 4 5 6 7 8 9
整数を入力して下さい−>asdf
整数を入力して下さい−>1.8
整数を入力して下さい−>78
入力された整数は78です。

 最初は、do〜while文で10回繰り返しです。
for文又はwhile文との違いを確かめましょう。

 次は、整数を入力してもらい整数以外が入力されている間は繰り返します。
文字列から整数に変換するのは「Integer.parseInt(str)」の部分です。
ここで整数以外を入力すると、「catch (NumberFormatException e)」の中に文が実行されます。
よって、整数以外の場合は「falg = true;」は実行されません。
このプログラムは最低でも1回は入力して貰う為、判定は後に行います。
これがwhile文との違いです。
for文又はwhile文でも同じ処理を行えますが、やはりdo〜while文の方がスッキリします。

 下は、少し難しいと思うのでfor文又はwhile文との違いが分かればこの時間は十分です。


2時間目 配列に戻る     4時間目 柔軟に繰り返に進む

単位4 処理を繰り返すにはに戻る

トップページに戻る