この記事で学べる知識:繰り返しの制御
この記事の練習問題で使用する知識:
基礎構文(レッスン1)、比較演算子と論理演算子、分岐処理(if文)、分岐処理(switch文)、繰り返し処理(for文)、繰り返し処理(while文)、繰り返しの制御、配列、エラーメッセージ、例外処理の基礎
<<前のページ | 問題集Top |
次のページ>> |
JAVAの「繰り返しの制御」とは
この章ではJAVAにおける「繰り返しの制御」の意味や使い方を学習します。必要ない方はここをクリックして練習問題へ飛びましょう。
繰り返し処理をしている中で、特定の条件に基づいて処理を中断したり、次の繰り返しに進めたい場合があります。
Javaにはこうした制御を行うためにbreak
文とcontinue
文が用意されています。
このページではbreak
とcontinue
を使って繰り返しを効率的に制御する方法を解説します。
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
ループでのbreak
とcontinue
の使い方を見てみましょう。
どちらも繰り返し処理内で条件を基にした制御に非常に役立ちます。
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:Scannerクラスをインポート
2:BreakContinueExampleクラスの定義
□ mainメソッドの定義
□ □ Scannerオブジェクトscannerの初期化
□ □ 「ループを終了したい数値を入力してください(1から20の間):」と出力
□ □ ユーザーから入力を受け取り、変数stopNumberに代入
□ □ 「ループの開始:」と出力
□ □ forループを1から20まで繰り返すように設定
□ □ □ if文で変数iがstopNumberに等しいか判定
□ □ □ □ 真の場合、「iに到達しました。ループを終了します。」と出力
□ □ □ □ break文でループを終了
□ □ □ if文で変数iが3の倍数か判定
□ □ □ □ 真の場合、「iは3の倍数です。」と出力
□ □ □ □ continue文で次のループに進む
□ □ □ 「現在の数値: 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の間):"); /* 【穴埋め問題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); // 現在の数値を表示 } } }
正解コードの解説
このコードではbreak
とcontinue
を使ってループを制御する方法を学べます。
以下に各ブロックの内容を順に解説します。
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まで繰り返します。
ループの中ではbreak
やcontinue
を使って特定の条件で制御を行います。
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);
i
がstopNumber
や3の倍数でない場合、単純に現在の数値を表示します。
まとめ
このプログラムを通してJavaのbreak
とcontinue
の使い方を学びました。
break
はループを完全に抜けるために使用され、continue
は特定の条件で処理をスキップして次の反復に進むために使います。
これらの制御文を理解することで、より柔軟で効率的なコードが書けるようになります。
引き続き他の制御文やメソッドの使い方も学び、プログラミングの理解を深めていきましょう。
<<前のページ |
問題集Top |
次のページ>> |
この記事への質問・コメント
この記事を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。