Java | break/continue/return の使い分け 早見表+練習問題

Java Java
スポンサーリンク

ではここでは、
《break/continue/return の使い分け 早見表+練習問題セット》
を初心者〜実務者まで理解できるテキスト教材スタイル(図+コード表+練習問題付き)でまとめます。


1. まずざっくり違いを掴む

制御文何を止める?その後どうなる?主な使いどころ
breakループ全体ループを終了し、外の処理へ進む検索処理・リトライ・異常終了
continue今の1回の繰り返しその周の残り処理をスキップして次へ条件スキップ・フィルタ処理
returnメソッド全体メソッドの実行を終了し、呼び出し元へ戻る条件不成立で即終了・早期リターン

2. ASCII 図でイメージ

┌─────for文────┐
│ i=1                │
│  │                │
│ [条件分岐]          │
│  │                │
│  ├─ continue → 次のiへ   ← (ループは続く)
│  ├─ break ---------> ループを抜ける
│  └─ return --------> メソッド自体を終了
└───────────┘

3. コードで比較(for文内)

for (int i = 1; i <= 5; i++) {
    if (i == 2) continue; // この回だけスキップ
    if (i == 4) break;    // ループ終了
    if (i == 5) return;   // メソッド終了(以降の処理に行かない)
    System.out.println("i=" + i);
}
System.out.println("for文の外側");
Java

出力:

i=1
i=3
for文の外側   ← breakで止まるのでreturn行は到達せず

4. 実務での使い分けパターン表

処理目的最適な制御文実務での例
検索で最初に見つけた時に終えるbreakユーザーID一致で処理終了
不正値だけ飛ばして続けたいcontinueデータ中のnullをスキップ
メソッド全体を早期終了したいreturn引数が不正なら即終了
ネストをすぐ抜けたいbreak(ラベル付き)二重ループ探索の中断
Streamに書き換えるときfindFirst / anyMatchbreak相当の早期終了

5. 実務コード例(対比)

break:最初に一致したら終了

for (User u : users) {
    if (u.id().equals(targetId)) {
        System.out.println("見つけた:" + u);
        break;
    }
}
System.out.println("検索完了");
Java

continue:不正データだけスキップ

for (User u : users) {
    if (u.isInactive()) continue;
    process(u);
}
Java

return:早期リターン(バリデーション)

public void register(User u) {
    if (u == null) return;
    if (u.getName().isBlank()) return;
    save(u);
}
Java

6. よくある混同パターン(注意!)

よくある誤解正しい理解
break でメソッドを抜けると思っている× ループしか抜けないreturn がメソッド終了
continue でループが止まる× ループは継続✅ その1回だけスキップ
return をループ中に使うOKだが注意メソッド全体を抜けるため、ループの外の処理は実行されない

7. 練習問題(解答付き)

【問題1】

1〜10 まで表示し、5 になったら止める。
👉 使用すべき制御文は?

答え: break

for (int i = 1; i <= 10; i++) {
    if (i == 5) break;
    System.out.println(i);
}
Java

【問題2】

1〜5 のうち、偶数だけスキップして奇数だけ出力。
👉 使用すべき制御文は?

答え: continue

for (int i = 1; i <= 5; i++) {
    if (i % 2 == 0) continue;
    System.out.println(i);
}
Java

【問題3】

メソッド printPositive(int n) を作り、負の数なら何もせず終了する。
👉 使用すべき制御文は?

答え: return

void printPositive(int n) {
    if (n < 0) return;
    System.out.println("n=" + n);
}
Java

【問題4】

二重ループで、特定の値が見つかったら両方のループを抜ける。
👉 使用すべき制御文は?

答え: break(ラベル付き)

Outer:
for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        if (i == 1 && j == 2) {
            System.out.println("発見!");
            break Outer;
        }
    }
}
Java

【問題5】

breakcontinuereturn の違いを1行で説明してみよう。

答え例:

break はループを抜ける、continue は1回スキップ、return はメソッドを終える。


8. まとめ図

┌────────────────────┐
│  break     → ループを抜ける        │
│  continue  → その回をスキップ      │
│  return    → メソッドを終了        │
└────────────────────┘

9. チャレンジ課題(中級)

  1. 入力値が "stop" ならループを抜ける(break)
  2. 空文字ならスキップ(continue)
  3. "exit" ならメソッド終了(return)
void processInput(Scanner sc) {
    while (true) {
        System.out.print("入力: ");
        String s = sc.nextLine();
        if (s.equals("stop")) break;
        if (s.isEmpty()) continue;
        if (s.equals("exit")) return;
        System.out.println("入力: " + s);
    }
    System.out.println("ループ終了");
}
Java

10. 現場Tips

  • return は「早期リターン」として、ネストを浅く保つ書き方に使うのが◎。
  • breakcontinue は「可読性のために条件を減らす」目的で使うと綺麗。
  • Stream API ではそれぞれに相当する構文:
    • breakfindFirst(), anyMatch()
    • continuefilter()
    • return → メソッド分割で代替
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました