Java | continue文 練習問題セット

Java Java
スポンサーリンク

基礎編


問題1:偶数をスキップして表示しよう

目的: continue文の基本動作を理解する。

🔹説明

1〜10までの数を順に表示します。
ただし、「偶数」のときは表示せずスキップしてください。

💻 サンプルコード

for (int i = 1; i <= 10; i++) {
    if (i % 2 == 0) {
        continue;  // 偶数はスキップ
    }
    System.out.println(i);
}
Java

💡 出力結果

1
3
5
7
9

🔸 フローチャート(ASCII)

+---------------------+
| i = 1 ~ 10          |
+---------------------+
          |
          v
    [ i が偶数? ]--Yes--> (スキップ)
          |
         No
          v
  System.out.println(i)

問題2:3の倍数をスキップして合計を求めよう

目的: 条件式を少し複雑に。

💻 サンプルコード

int sum = 0;
for (int i = 1; i <= 10; i++) {
    if (i % 3 == 0) {
        continue; // 3の倍数はスキップ
    }
    sum += i;
}
System.out.println("合計: " + sum);
Java

💡 出力結果

合計: 37

問題3:空文字をスキップしよう

目的: Stringの扱いに慣れる。

💻 サンプルコード

String[] names = {"Alice", "", "Bob", "", "Carol"};

for (String name : names) {
    if (name.isEmpty()) {
        continue; // 空文字をスキップ
    }
    System.out.println(name);
}
Java

💡 出力結果

Alice
Bob
Carol

問題4:二重forでスキップ

目的: ネスト構造でのcontinue挙動確認。

💻 サンプルコード

for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 3; j++) {
        if (i == j) continue; // 同じ値のときスキップ
        System.out.println(i + " - " + j);
    }
}
Java

💡 出力結果

1 - 2
1 - 3
2 - 1
2 - 3
3 - 1
3 - 2

🔸 処理イメージ(ASCII)

外側: i=1 → 内側j=1~3
   i==jのときcontinueで1回だけスキップ

問題5:入力バリデーションでスキップ

目的: 実務に近い「不正データ除外」。

💻 サンプルコード

String[] inputs = {"100", "abc", "200", "xyz"};

for (String input : inputs) {
    if (!input.matches("\\d+")) {
        System.out.println("数値でないのでスキップ: " + input);
        continue;
    }
    int num = Integer.parseInt(input);
    System.out.println("有効データ: " + num);
}
Java

💡 出力結果

有効データ: 100
数値でないのでスキップ: abc
有効データ: 200
数値でないのでスキップ: xyz

中級編(実務応用)


問題6:CSV処理で無効データをスキップ

目的: continueをデータ処理に活用。

String[] csvLines = {"A,10", "B,", ",30", "C,40"};

for (String line : csvLines) {
    String[] parts = line.split(",");
    if (parts.length < 2 || parts[0].isEmpty() || parts[1].isEmpty()) {
        continue; // 欠損データは無視
    }
    System.out.println("有効: " + line);
}
Java

💡 出力結果

有効: A,10
有効: C,40

Stream API 版リファクタリング例

処理目的for文版Stream版
空文字除外if (s.isEmpty()) continue;.filter(s -> !s.isEmpty())
数値のみ抽出if (!s.matches("\\d+")) continue;.filter(s -> s.matches("\\d+"))
ネスト処理簡略化二重for.flatMap()
条件スキップcontinue.filter()

💻 例:Stream版(空文字スキップ)

List<String> list = Arrays.asList("A", "", "B", "", "C");
list.stream()
    .filter(s -> !s.isEmpty())
    .forEach(System.out::println);
Java

出力:

A
B
C

総まとめ

概念動作
continue現在のループ処理をスキップして次の繰り返しへ
breakループ自体を終了
ネスト構造内側ループだけに影響する(外側は継続)
Streamでの代替.filter()でスキップを表現可能
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました