前回の記事(繰り返し処理の強い味方! while文とdo-while文を使いこなそう! | ToolDocs ←ここをクリックしてね!)では、Javaの繰り返し処理、いわゆる「ループ」について熱く語り合ったよね。for文とかwhile文とか、みんなもうバッチリ使いこなせてるかな?
今回は、そのループをさらにパワーアップさせる、**「break」と「continue」**という2つの便利なキーワードを紹介するよ!こいつらを使えば、ループを途中で止めたり、特定の処理だけスキップしたりと、まるで手品みたいにループを制御できるようになるんだ!
さあ、早速その魔法を見ていこう!
break文:ループをぶっちぎり!
まずはbreak文から!こいつはね、ループの中に書くと、そのbreak文が実行された瞬間に、そのループ自体を完全に終了させちゃう、っていう超強力なコマンドなんだ。
例を見てみよう。
Java
public class BreakSample {
public static void main(String[] args) {
System.out.println("break文の例を見てみよう!");
for (int i = 0; i < 10; i++) {
System.out.println("現在のiの値: " + i);
if (i == 5) {
System.out.println("iが5になったので、ループを終了します!");
break; // iが5になったら、ループをぶっちぎる!
}
}
System.out.println("ループが終わりました。");
}
}
このコードを実行するとどうなると思う?
break文の例を見てみよう!
現在のiの値: 0
現在のiの値: 1
現在のiの値: 2
現在のiの値: 3
現在のiの値: 4
現在のiの値: 5
iが5になったので、ループを終了します!
ループが終わりました。
ね、iが5になった瞬間に「ループを終了します!」って表示されて、それ以降のiの値(6, 7, 8, 9)は一切表示されてないでしょ?これがbreak文の力なんだ!
どんな時に使うかって?例えば、
- ユーザーが何か特定の入力をしたら、処理を中断したい時
- データの検索中に、目的のデータが見つかったら、それ以上検索する必要がない時
なんて時に大活躍するよ!

paizaで実行した結果
continue文:ちょっとだけ休憩、次のターンへGO!
お次はcontinue文!break文がループ全体を終わらせるのに対して、continue文は、現在のループの1周だけをスキップして、次の周回(イテレーション)に移る、っていう働きをするんだ。
これも例で見てみよう。
Java
public class ContinueSample {
public static void main(String[] args) {
System.out.println("continue文の例を見てみよう!");
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) { // iが偶数だったら
System.out.println(i + "は偶数なのでスキップします!");
continue; // 現在の周回をスキップして、次の周回へGO!
}
System.out.println("現在のiの値 (奇数です): " + i); // 奇数の時だけ表示される
}
System.out.println("ループが終わりました。");
}
}
このコードを実行すると、こんな感じになるよ!
continue文の例を見てみよう!
0は偶数なのでスキップします!
現在のiの値 (奇数です): 1
2は偶数なのでスキップします!
現在のiの値 (奇数です): 3
4は偶数なのでスキップします!
現在のiの値 (奇数です): 5
6は偶数なのでスキップします!
現在のiの値 (奇数です): 7
8は偶数なのでスキップします!
現在のiの値 (奇数です): 9
ループが終わりました。
見てみて!iが偶数のときは、「〇は偶数なのでスキップします!」って表示されて、その下の「現在のiの値 (奇数です)」っていう行は実行されてないよね。でも、ループ自体はちゃんと最後まで(iが9になるまで)回ってる!これがcontinue文の動きなんだ。
どんな時に使うかっていうと、
- ループの中で、特定の条件を満たす場合は、その後の処理をせずに次のデータに進みたい時
- エラーデータだけをスキップして、正常なデータだけを処理したい時
なんかに便利だよ!

paizaで実行した結果
breakとcontinue、使い分けが肝心!
ここまでbreakとcontinueを見てきたけど、それぞれの違いと使い分けが重要だよね。
break: ループを完全に終わらせたい時に使う。もうそのループの中の処理は一切不要!って時。continue: ループの特定の周回だけをスキップしたい時に使う。ループ自体は続けたいけど、今回のデータだけは特別扱いしたい!って時。
イメージとしては、breakは「緊急停止ボタン」、continueは「一時停止ボタン」って感じかな。
ちょっと応用編:while文でも使ってみよう!
もちろん、for文だけじゃなくてwhile文でもbreakとcontinueは使えるよ!
while文でのbreak
Java
import java.util.Scanner; // スキャナを使ってみよう!
public class WhileBreakSample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // ユーザーからの入力を受け取る準備
String input;
System.out.println("何か入力してください。「exit」と入力すると終了します。");
while (true) { // 無限ループ!でも心配しないで、breakで止めるから!
System.out.print("> ");
input = scanner.nextLine(); // ユーザーの入力を読み込む
if (input.equals("exit")) {
System.out.println("「exit」が入力されました。プログラムを終了します。");
break; // 「exit」が入力されたら無限ループをぶっちぎる!
}
System.out.println("入力された内容: " + input);
}
scanner.close(); // スキャナを閉じるのを忘れずに!
System.out.println("プログラムが終了しました。");
}
}
このコードを実行すると、あなたが「exit」と入力するまで、ずっと入力待ちの状態になるよ。これでユーザーとの対話形式のプログラムも作れそうだね!
while文でのcontinue
Java
public class WhileContinueSample {
public static void main(String[] args) {
int num = 0;
System.out.println("while文のcontinue文の例を見てみよう!");
while (num < 10) {
num++; // まずはnumをインクリメント!
if (num % 3 == 0) { // numが3の倍数だったら
System.out.println(num + "は3の倍数なのでスキップ!");
continue; // 現在の周回をスキップして、次の周回へGO!
}
System.out.println("現在のnumの値: " + num);
}
System.out.println("ループが終わりました。");
}
}
このコードでは、numが3の倍数の時は「〇は3の倍数なのでスキップ!」と表示され、その下のSystem.out.println("現在のnumの値: " + num);は実行されずに次のループに移るよ。

paizaで実行した結果
ネストされたループとbreak/continue(おまけだよ!)
ループの中にループがある、いわゆる「ネストされたループ」の場合、breakやcontinueは、最も内側のループにしか作用しないんだ。
Java
public class NestedLoopBreakSample {
public static void main(String[] args) {
System.out.println("ネストされたループとbreakの例");
outerLoop: // 外側のループにラベルを付ける(おまけ)
for (int i = 0; i < 3; i++) {
System.out.println("外側のループ: i = " + i);
for (int j = 0; j < 3; j++) {
System.out.println(" 内側のループ: j = " + j);
if (i == 1 && j == 1) {
System.out.println(" iが1、jが1になったので、内側のループを終了します!");
break; // 内側のループだけが終了する
// break outerLoop; // こう書くと外側のループも終了できる(ちょっと難しいから今は覚えなくてOK!)
}
}
}
System.out.println("全てのループが終わりました。");
}
}
この例だと、iが1でjが1になったら内側のループだけが終了して、外側のループは引き続き回るよ。
もし「外側のループごと終了させたい!」って場合は、break outerLoop;のように**ラベル付きbreak**を使うんだけど、これはちょっと応用的な使い方だから、今は「へ〜、そんなこともできるんだ」くらいに思っておいて大丈夫だよ!

paizaで実行した結果
まとめ!
今回はJavaの繰り返し処理をさらに便利にするbreakとcontinueについて学んだね!
break: ループを完全に終了させる魔法の呪文。continue: ループの現在の周回だけをスキップして、次の周回に進む魔法の呪文。
この2つのキーワードを使いこなせれば、君のプログラムはもっと柔軟で賢くなること間違いなし!
たくさんコードを書いて、実際に動かしてみて、このbreakとcontinueの動きを肌で感じてみてほしいな!
何か質問があったらいつでもコメントしてね!


コメント