Java入門 STEP6|繰り返し処理を使ってみよう

karin@taishi@felmia

for文を使ってみよう

for文は、同じ処理を決めた回数だけ繰り返したいときによく使います。

例えば、「Hello」と5回表示したい場合は、次のように書くことができます。

for (int i = 0; i < 5; i++) {
    System.out.println("Hello");
}

このコードを実行すると、「Hello」が5回表示されます。

for文の書き方

for文の基本的な形を確認してみましょう。

for (初期化; 条件式; 更新処理) {
    繰り返したい処理
}

for( )の中は、;(セミコロン)で3つに分かれています。

先ほどのコードでは、次のようになっています。

int i = 0 → 最初にiを0にする

i < 5iが5より小さい間は繰り返す

i++ → 1回繰り返すごとにiを1増やす

STEP3で学んだ++がここで登場しました。

この3つを使って、何回処理を繰り返すのかを決めています。

実際にfor文を使ってみよう

新しくForSampleクラスを作成してください。

作成できたら、次のコードを入力して実行してみましょう

public class ForSample {

    public static void main(String[] args) {

        for (int i = 0; i < 5; i++) {
            System.out.println("Hello");
        }

    }
}

実行結果

Hello
Hello
Hello
Hello
Hello

たった1つのSystem.out.printlnで、「Hello」を5回表示することができました。

iの値はどう変わっている?

先ほどのプログラムでは、変数iの値が繰り返すたびに変化しています。

流れを確認すると、次のようになります。

繰り返しiの値i < 5
1回目0true
2回目1true
3回目2true
4回目3true
5回目4true
次の判定5false

i0から始まり、処理が終わるたびにi++で1ずつ増えていきます。

i5になると、

i < 5

falseになるため、繰り返しが終了します。

0から始まることに注目しよう

今回のfor文は、i = 0から始まっています。

0、1、2、3、4と処理されるため、全部で5回繰り返されます。

「5回繰り返すのに、なぜi < 5なの?」と最初は迷いやすいところです。

まずは、0から4までで5回と確認しておきましょう。

繰り返している数字も表示してみよう

変数iは、繰り返している処理の中でも使うことができます。

今回は新しくForNumberSampleクラスを作成してください。

public class ForNumberSample {

    public static void main(String[] args) {

        for (int i = 0; i < 5; i++) {
            System.out.println(i);
        }

    }
}

実行結果

0
1
2
3
4

このように、for文の中でiを使うことで、繰り返すたびに異なる値を使うこともできます。

ルミィ
ルミィ

最初はforの中がちょっと複雑に見えるかも!
「最初の値」「繰り返す条件」「1回ごとの変化」の3つに分けて見ると分かりやすいよ♪

while文を使ってみよう

while文も、同じ処理を繰り返すために使います。

for文が「5回繰り返す」のように回数を決めて使うことが多いのに対して、while文は**「条件を満たしている間は繰り返す」**という処理でよく使います。

基本的な書き方は次のようになります。

while (条件式) {
    繰り返したい処理
}

条件式がtrueの間は、{ }の中に書かれた処理を繰り返します。

条件式がfalseになると、繰り返しを終了します。

実際にwhile文を使ってみよう

新しくWhileSampleクラスを作成してください。

作成できたら、次のコードを入力して実行してみましょう。

public class WhileSample {

    public static void main(String[] args) {
        int num = 1;

        while (num <= 5) {
            System.out.println(num);
            num++;
        }
    }

}

実行結果

1
2
3
4
5

最初に、num1を代入しています。

whileの条件は、

num <= 5

なので、numが5以下の間は処理を繰り返します。

そして、繰り返すたびに、

num++;

numを1ずつ増やしています。

num6になると、num <= 5falseになるため、繰り返しが終了します。

for文とwhile文の違い

for文とwhile文は、どちらも繰り返し処理に使います。

書き方向いている場面
for繰り返す回数が決まっているとき
while条件を満たしている間、繰り返したいとき

例えば、

「10回繰り返す」

という処理ならfor文が分かりやすく、

「入力された値が0になるまで繰り返す」

といった処理ならwhile文が分かりやすくなります。

どちらでも書ける処理もあるので、必ず使い分けなければならないわけではありません。

まずは、回数が分かっているならfor、条件によって繰り返すならwhileと考えておけば大丈夫です。

無限ループに注意しよう

ここは重要なので、注意ボックスにします。

条件がずっとtrueだと処理が終わらない

例えば、

num++;

を書き忘れると、numの値はずっと1のままです。

そのため、

num <= 5

がずっとtrueになり、while文が終わらなくなってしまいます。

このように、繰り返し処理が終わらなくなることを**「無限ループ」**と呼びます。

while文を書くときは、いつ条件がfalseになるのかを確認するようにしましょう。

プログラムが止まらなくなったら

Eclipseで無限ループになってしまった場合は、コンソールにある停止ボタン(赤い四角のボタン)を押してプログラムを終了できます。

do-while文を使ってみよう

do-while文も、条件を満たしている間、処理を繰り返すために使います。

while文との大きな違いは、条件を確認するタイミングです。

while文は、処理を実行する前に条件を確認します。

一方、do-while文は、処理を実行したあとに条件を確認します。

そのため、do-while文では条件が最初からfalseでも、処理が最低1回は実行されます。

do-while文の書き方

基本的な書き方は次のようになります。

do {
    繰り返したい処理
} while (条件式);

do{ }の中に繰り返したい処理を書き、そのあとにwhileと条件式を書きます。

while文とは違い、最後に;(セミコロン)が必要なことにも注目してください。

実際にdo-while文を使ってみよう

新しくDoWhileSampleクラスを作成してください。

作成できたら、次のコードを入力して実行してみましょう。

public class DoWhileSample {

    public static void main(String[] args) {
        int num = 1;

        do {
            System.out.println(num);
            num++;
        } while (num <= 5);
    }

}

実行結果

1
2
3
4
5

今回はnum1から始まり、処理を実行するたびに1ずつ増えていきます。

処理を実行したあとに、

num <= 5

を確認し、条件がtrueならもう一度繰り返します。

num6になると条件がfalseになり、繰り返しが終了します。

while文との違いを確認しよう

違いが分かりやすいように、最初から条件を満たしていない場合を見てみましょう。

int num = 10;

while (num <= 5) {
    System.out.println(num);
}

このwhile文では、最初にnum <= 5を確認します。

10 <= 5falseなので、System.out.println(num);一度も実行されません。

同じ条件をdo-while文で書いてみます。

int num = 10;

do {
    System.out.println(num);
} while (num <= 5);

こちらは条件を確認する前にdoの中を実行するため、条件がfalseでも10が1回表示されます。

whileとdo-whileの違い

while
→ 最初に条件を確認する
→ 条件によっては一度も実行されない

do-while
→ 処理したあとに条件を確認する
必ず1回は実行される

「最低でも1回は処理したい」という場合に、do-while文を使うことができます。

breakを使って繰り返しを途中で終了しよう

繰り返し処理は、条件を満たすまで繰り返すだけでなく、途中で終了させることもできます。

繰り返しを途中で終了したいときに使うのがbreakです。

例えば、1から10まで繰り返す途中で、iが5になったら終了する場合は次のように書きます。

for (int i = 1; i <= 10; i++) {
    if (i == 5) {
        break;
    }

    System.out.println(i);
}

i == 5trueになるとbreakが実行され、その時点でfor文が終了します。

実際にbreakを使ってみよう

新しくBreakSampleクラスを作成してください。

作成できたら、次のコードを入力して実行してみましょう。

public class BreakSample {

    public static void main(String[] args) {

        for (int i = 1; i <= 10; i++) {
            if (i == 5) {
                break;
            }

            System.out.println(i);
        }

    }
}

実行結果

1
2
3
4

iが5になるとbreakが実行されるため、5以降は表示されません。

breakは、「目的の値が見つかったので、それ以上繰り返す必要がない」といった場合にも使われます。

continueを使って処理を飛ばしてみよう

continueも、繰り返し処理の途中で使うことができます。

ただし、breakのように繰り返しそのものを終了するわけではありません。

continueが実行されると、その回の残りの処理を飛ばして、次の繰り返しへ進みます。

例えば、1から5まで表示する中で、3だけを表示しないようにしてみましょう。

for (int i = 1; i <= 5; i++) {
    if (i == 3) {
        continue;
    }

    System.out.println(i);
}

実際にcontinueを使ってみよう

新しくContinueSampleクラスを作成してください。

public class ContinueSample {

    public static void main(String[] args) {

        for (int i = 1; i <= 5; i++) {
            if (i == 3) {
                continue;
            }

            System.out.println(i);
        }

    }
}

実行結果

1
2
4
5

iが3のときにcontinueが実行されます。

そのため、その回のSystem.out.println(i);は実行されず、次の繰り返しへ進みます。

for文そのものは終了しないので、4と5は通常どおり表示されます。

breakとcontinueの違い

break
→ 繰り返し処理そのものを終了する

continue
→ その回の残りの処理だけを飛ばして、次の繰り返しへ進む

例えば、

1・2・3・4・5……

と繰り返している途中で、

breakそこで終了!

continue今回は飛ばして次へ!

と考えると分かりやすくなります。

ルミィ
ルミィ

breakは「ここでおしまい!」、continueは「今回はスキップ!」って覚えると分かりやすいよ♪

よくある間違い

繰り返し処理では、条件や変数の値を少し間違えるだけで、繰り返す回数が変わったり、処理が終わらなくなったりすることがあります。

特に次のポイントに注意しましょう。

「<」と「<=」を間違える

<<=では、条件にその値を含むかどうかが違います。

例えば、

i < 5

の場合は、iが5になると条件がfalseになります。

i <= 5

の場合は、iが5のときも条件がtrueになります。

繰り返す回数を確認しよう

i = 1から始めた場合、

i < 5 → 1、2、3、4の4回

i <= 5 → 1、2、3、4、5の5回

となります。

「何回繰り返したいのか」と「どの値まで含めたいのか」を確認して条件を書きましょう。

値を増やす処理を忘れている

while文では、条件に使っている変数を変化させる処理を書き忘れないようにしましょう。

int num = 1;

while (num <= 5) {
    System.out.println(num);
}

このコードでは、numがずっと1のままです。

そのため、num <= 5がずっとtrueになり、繰り返しが終わりません。

次のようにnum++を入れることで、いずれ条件がfalseになります。

int num = 1;

while (num <= 5) {
    System.out.println(num);
    num++;
}

プログラムが終わらないときは無限ループを確認しよう

繰り返し処理がいつまでも終わらない場合は、

「条件がいつfalseになるのか」

を確認してみましょう。

Eclipseでプログラムが止まらなくなった場合は、コンソールの停止ボタンから終了できます。

for文の開始する値に注意する

次の2つは、どちらも正しいfor文ですが、表示される値が違います。

for (int i = 0; i < 5; i++)

→ 0、1、2、3、4

for (int i = 1; i <= 5; i++)

→ 1、2、3、4、5

どちらも5回繰り返しています。

for文では、繰り返す回数だけでなく、iがどの値から始まるのかも確認しましょう。

breakとcontinueを間違える

breakcontinueは、どちらも繰り返し処理の途中で使いますが、動きが違います。

break繰り返しそのものを終了

continueその回だけ残りの処理を飛ばす

「繰り返しを終わらせたいのか」「今回だけ飛ばしたいのか」を考えて使い分けましょう。

do-while文の最後の「;」を忘れる

do-while文では、最後のwhile (条件式)のあとに;が必要です。

do {
    処理
} while (条件式);

while文とは見た目が少し違うので、;を書き忘れないようにしましょう。

ルミィ
ルミィ

繰り返しがおかしいときは、「最初の値」「条件」「値の変化」の3つを順番に確認してみよう♪

STEP6のまとめ

このSTEPでは、同じ処理を繰り返す「繰り返し処理」について学びました。

最後に、今回のポイントを振り返っておきましょう。

  • for文を使うと、決めた回数だけ処理を繰り返すことができる
  • for文では「最初の値」「繰り返す条件」「値の変化」を指定する
  • while文は、条件がtrueの間、処理を繰り返す
  • do-while文は、条件に関係なく最初の1回は必ず処理を実行する
  • 繰り返しの条件がずっとtrueになると「無限ループ」になる
  • breakを使うと、繰り返し処理を途中で終了できる
  • continueを使うと、その回の残りの処理だけを飛ばして次の繰り返しへ進める
  • <<=の違いによって、繰り返す回数が変わることがある

繰り返し処理を使えるようになると、同じコードを何度も書かなくても、少ないコードでたくさんの処理を実行できるようになります。

今後、配列など複数のデータを扱うようになると、繰り返し処理はさらに活躍します。

ルミィ
ルミィ

STEP6クリア!
forwhileは、これから何度も登場する大切な書き方だよ♪
迷ったときは「最初の値・条件・値の変化」を確認してみよう!

次のSTEPへ

次のSTEPでは、複数の処理をひとまとめにして、必要なときに呼び出せる「メソッド」について学びます。

例えば、

「こんにちは!」と表示する処理をメソッドとして作っておけば、必要な場所から呼び出して実行できます。

さらに、メソッドに値を渡す「引数」や、処理した結果を返す「戻り値」についても学んでいきます。

STEP7「メソッドを使ってみよう」

記事URLをコピーしました