【JAVA】レッスン2-06:繰り返しを制御しよう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:繰り返しの制御

この記事の練習問題で使用する知識:
基礎構文(レッスン1)比較演算子と論理演算子分岐処理(if文)分岐処理(switch文)繰り返し処理(for文)繰り返し処理(while文)繰り返しの制御配列エラーメッセージ例外処理の基礎

<<前のページ 問題集Top 次のページ>>

JAVAの「繰り返しの制御」とは

この章ではJAVAにおける「繰り返しの制御」の意味や使い方を学習します。必要ない方はここをクリックして練習問題へ飛びましょう。

繰り返し処理をしている中で、特定の条件に基づいて処理を中断したり、次の繰り返しに進めたい場合があります。

Javaにはこうした制御を行うためにbreak文とcontinue文が用意されています。

このページではbreakcontinueを使って繰り返しを効率的に制御する方法を解説します。

break文の解説

break文は繰り返し処理の中で条件を満たしたときに、処理を強制的に終了させたい場合に使用します。

これによりループ全体を途中で打ち切ることができます。

特に不要な処理を減らしたり、条件に基づいて早めに処理を終了させたい場合に役立ちます。

以下の例では1から10までの数値を繰り返し処理するコードとなっていますが、数値が5になった時点でbreak文によってループを終了しています。

public class BreakExample {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if (i == 5) {
                break; // iが5のとき、ループを終了する
            }
            System.out.println("数値: " + i);
        }
    }
}
// 実行結果:1 2 3 4

このコードではiが5になった時点でbreakが実行され、forループ全体が終了します。

これにより効率的に処理を制御できます。

continue文の解説

continue文は現在の繰り返しをスキップして、次の繰り返しに移行したいときに使用します。

条件を満たした場合のみ特定の処理を行わずに、次のループに進みます。

これにより特定の条件を避けたい場合に便利です。

以下の例は1から10までの数値を繰り返し処理するコードですが、偶数の場合にcontinue文を使用して、その数を表示せずに次の繰り返しに進みます。

public class ContinueExample {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if (i % 2 == 0) {
                continue; // 偶数の場合、この繰り返しをスキップする
            }
            System.out.println("数値: " + i);
        }
    }
}
// 実行結果:1 3 5 7 9

このコードではiが偶数のときにcontinue文が実行され、その場合はSystem.out.printlnが実行されません。

こうした制御により条件を満たす場合にのみ処理をスキップできます。

breakとcontinueの使用例

次にwhileループでのbreakcontinueの使い方を見てみましょう。

どちらも繰り返し処理内で条件を基にした制御に非常に役立ちます。

public class BreakContinueExample {
    public static void main(String[] args) {
        int i = 1;
        while (i <= 10) {
            if (i == 5) {
                break; // iが5になったらループを終了
            }
            if (i % 2 == 0) {
                i++;
                continue; // 偶数の場合、次の繰り返しへ
            }
            System.out.println("数値: " + i);
            i++;
        }
    }
}
// 実行結果:1 3

この例ではiが5になった時点でbreak文によってループが終了します。

またiが偶数の場合にはcontinueが実行され、偶数の数値は出力されません。

まとめ

break文とcontinue文は、Javaの繰り返し処理の中で制御を行うための重要な要素です。

breakはループ全体の終了に、continueは特定の繰り返しをスキップするために使います。

これらの使い方を理解することで、効率的なコードを記述することができるようになるでしょう。

練習問題2-6:ユーザーの入力に応じてループを制御するプログラムを作ろう

ユーザーから数値を入力してもらい、その数値に到達するとループを終了するプログラムを作成しましょう。

プログラムは1から20までの数値をループで表示しますが、3の倍数の場合は「○は3の倍数です」と表示し、それ以外の場合には通常通り「現在の数値: ○」と表示します。

この問題の要件

以下の要件に従ってコードを完成させてください。

  • Scannerクラスを使用して、ユーザーから数値(1から20の範囲)を入力してもらうこと。
  • forループを使い、1から20までの数値を表示するループを書くこと。
  • 入力された数値に到達した場合、break文を使ってループを終了すること。
  • 3の倍数の場合、「○は3の倍数です」と表示し、continue文を使って次のループに進むこと。
  • 3の倍数以外の場合には「現在の数値: ○」と表示すること。

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

ループを終了したい数値を入力してください(1から20の間):
7
ループの開始:
現在の数値: 1
現在の数値: 2
3は3の倍数です。
現在の数値: 4
現在の数値: 5
6は3の倍数です。
現在の数値: 7に到達しました。ループを終了します。

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:Scannerクラスをインポート
2:BreakContinueExampleクラスの定義
  □ mainメソッドの定義
  □ □ Scannerオブジェクトscannerの初期化
  □ □ 「ループを終了したい数値を入力してください(1から20の間):」と出力
  □ □ ユーザーから入力を受け取り、変数stopNumberに代入
  □ □ 「ループの開始:」と出力
  □ □ forループを1から20まで繰り返すように設定
  □ □ □ if文で変数iがstopNumberに等しいか判定
  □ □ □ □ 真の場合、「iに到達しました。ループを終了します。」と出力
  □ □ □ □ break文でループを終了
  □ □ □ if文で変数iが3の倍数か判定
  □ □ □ □ 真の場合、「iは3の倍数です。」と出力
  □ □ □ □ continue文で次のループに進む
  □ □ □ 「現在の数値: i」と出力

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

import java.util.Scanner; // Scannerクラスをインポート(ユーザーからの入力を受け取るため)

public class BreakContinueExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // 入力用のScannerオブジェクトを生成
        System.out.println("ループを終了したい数値を入力してください(1から20の間):");
        
        /* 【穴埋め問題1】
           ここにscannerを使用してユーザーの入力を整数として受け取り、変数stopNumberに代入するコードを書いてください。
        */
        
        System.out.println("ループの開始:");
        
        /* 【穴埋め問題2】
           ここにforループを1から20まで繰り返す設定を書くコードを書いてください。
        */
        
            /* 【穴埋め問題3】
               ここにif文でiがstopNumberに等しい場合にループを終了するコードを書いてください。
            */
            
            /* 【穴埋め問題4】
               ここにif文でiが3の倍数か判定し、該当する場合にメッセージを表示し、次のループに進むコードを書いてください。
            */
            
            System.out.println("現在の数値: " + i); // 現在の数値を表示
    }
}

以上がこの問題の穴埋めコードです。

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。



解答例と解説

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

import java.util.Scanner; // Scannerクラスをインポート(ユーザーからの入力を受け取るため)

public class BreakContinueExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // 入力用のScannerオブジェクトを生成
        System.out.println("ループを終了したい数値を入力してください(1から20の間):");
        int stopNumber = scanner.nextInt(); // ループ終了の数値を取得

        System.out.println("ループの開始:");
        for (int i = 1; i <= 20; i++) { // 1から20まで繰り返し
            if (i == stopNumber) {
                System.out.println(i + "に到達しました。ループを終了します。");
                break; // stopNumberに到達したらループを終了
            }
            if (i % 3 == 0) {
                System.out.println(i + "は3の倍数です。"); // 3の倍数のときのみメッセージを表示
                continue; // 3の倍数の場合、次の繰り返しへ進む
            }
            System.out.println("現在の数値: " + i); // 現在の数値を表示
        }
    }
}

正解コードの解説

このコードではbreakcontinueを使ってループを制御する方法を学べます。

以下に各ブロックの内容を順に解説します。

Scannerのインポート

import java.util.Scanner;

Scannerクラスをインポートしています。

このクラスはユーザーからの入力を受け取るために使用され、標準入力(コンソール)からデータを読み取ります。

クラスとmainメソッドの定義

public class BreakContinueExample {
    public static void main(String[] args) {

BreakContinueExampleというクラスを定義し、Javaプログラムのエントリーポイントであるmainメソッドを定義しています。

この中にプログラム全体の処理を記述します。

Scannerオブジェクトの生成とユーザーの入力受付

Scanner scanner = new Scanner(System.in);
System.out.println("ループを終了したい数値を入力してください(1から20の間):");
int stopNumber = scanner.nextInt();

ここでScannerオブジェクトを生成し、ユーザーがループを終了したい数値を入力できるようにしています。

ユーザーの入力した数値はstopNumberという変数に格納されます。

ループの開始

System.out.println("ループの開始:");
for (int i = 1; i <= 20; i++) {

この部分ではforループを使ってiの値を1から20まで繰り返します。

ループの中ではbreakcontinueを使って特定の条件で制御を行います。

breakを使ったループの終了

if (i == stopNumber) {
    System.out.println(i + "に到達しました。ループを終了します。");
    break;
}

break文を使用してユーザーが指定したstopNumberに到達した際にループを強制的に終了しています。

breakは現在のループを完全に抜け出すために使用されます。

continueを使ったループのスキップ

if (i % 3 == 0) {
    System.out.println(i + "は3の倍数です。");
    continue;
}

ここではcontinue文を使って3の倍数である場合にメッセージを表示し、ループ内のそれ以降の処理をスキップして次の反復へ移ります。

continue文を使うことで現在のループの処理を終了し、次のループに移行できます。

通常の値の表示

System.out.println("現在の数値: " + i);

istopNumberや3の倍数でない場合、単純に現在の数値を表示します。

まとめ

このプログラムを通してJavaのbreakcontinueの使い方を学びました。

breakはループを完全に抜けるために使用され、continueは特定の条件で処理をスキップして次の反復に進むために使います。

これらの制御文を理解することで、より柔軟で効率的なコードが書けるようになります。

引き続き他の制御文やメソッドの使い方も学び、プログラミングの理解を深めていきましょう。

<<前のページ 問題集Top 次のページ>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    JAVAテキスト&問題集へ戻る
    トップページへ戻る