基礎編
問題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()でスキップを表現可能 |
