🎃
Java Silver 強化③ 繰り返し分と制御分
繰り返し処理(ループ)
for
文(基本構文)
1. 構文:
for (初期化; 条件式; 更新処理) {
// 繰り返し処理
}
特徴:
- ループ回数が決まっている場合に適している。
- 初期化 → 条件判定 → 処理実行 → 更新 の順番で実行。
例: 1〜5 を出力
for (int i = 1; i <= 5; i++) {
System.out.println(i); //1 2 3 4 5
}
while
文(条件付きループ)
2. 構文:
while (条件式) {
// 繰り返し処理
}
特徴:
-
条件が
true
の間 繰り返す。 - ループ回数が決まっていない場合 に適している。
例: 5 から 1 までカウントダウン
int i = 5;
while (i > 0) {
System.out.println(i); // 5 4 3 2 1
i--;
}
do-while
文(最低 1 回は実行されるループ)
3. 構文:
do {
// 繰り返し処理
} while (条件式);
特徴:
- 最低 1 回は必ず実行される。
- ループの条件が最後にチェックされるため、1回目の処理は無条件に行われる。
例: 0 以上の数値を入力するまでループ
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num;
do {
System.out.print("0以上の数を入力してください: ");
num = scanner.nextInt();
} while (num < 0);
System.out.println("入力された数: " + num);
}
}
for-each
文(拡張 for
文)
4. 構文:
for (データ型 変数名 : 配列またはコレクション) {
// 繰り返し処理
}
特徴:
- 配列やリストの 要素を順番に処理するのに適している。
- インデックス指定が不要 なので簡潔に書ける。
例: 配列の要素を順番に出力
int[] numbers = {10, 20, 30, 40, 50};
for (int num : numbers) {
System.out.println(num);
}
実行結果
10
20
30
40
50
break
と continue
5.
break
: ループの強制終了
ループ内で break
が実行されると、即座にループを終了 する。
例: 3 を見つけたらループ終了
for (int i = 1; i <= 5; i++) {
if (i == 3) {
break;
}
System.out.println(i);
}
実行結果
1
2
➡ i == 3
の時に break
でループ終了。
continue
: 次のループへスキップ
continue
が実行されると、その回の処理をスキップして次のループへ進む。
例: 3 のときだけスキップ
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue;
}
System.out.println(i);
}
実行結果
1
2
4
5
➡ i == 3
の時は continue
で System.out.println(i);
をスキップ。
continue
/ ラベルと break
6. ラベルと
continue
とラベルの使い方
continue
はループの 現在の繰り返し処理をスキップ し、次のループへ進むために使う。
通常 continue
は 一番内側のループに対して適用 されるが、ラベルを使うと特定のループをスキップ できる。
continue
VS ラベル **
**例:public class Main {
public static void main(String[] args) {
System.out.println("continue");
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
if (j == 2) continue; // jが2の時だけスキップ
System.out.println("i=" + i + ", j=" + j);
}
}
System.out.println("\n continue");
outer: // ラベル
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
if (j == 2) continue outer; // jが2だったらラベルがついてるところへ移動
System.out.println("i=" + i + ", j=" + j);
}
}
}
}
実行結果
continue
i=1, j=1
i=1, j=3
i=2, j=1
i=2, j=3
i=3, j=1
i=3, j=3
continue
i=1, j=1
i=2, j=1
i=3, j=1
ポイント
-
continue
: 次の繰り返しへ進む(一番内側のループに適用) -
continue ラベル
: 指定したループの次の繰り返しへ進む
break
とラベルの使い方
break
はループを 途中で終了 させるために使う。
通常 break
は 一番内側のループだけを終了 するが、ラベルを使うことで特定の外側のループ全体を終了 させることができる。
break
VS ラベル付き break
例: public class Main {
public static void main(String[] args) {
System.out.println("break");
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
if (j == 2) break; // jが2になったら内側のループを終了
System.out.println("i=" + i + ", j=" + j);
}
}
System.out.println("\nbreak with label");
outer: // ラベル
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
if (j == 2) break outer; // jが2になったらouterループ全体を終了
System.out.println("i=" + i + ", j=" + j);
}
}
}
}
実行結果
break
i=1, j=1
i=2, j=1
i=3, j=1
break with label
i=1, j=1
ポイント
-
break;
:一番内側のループを途中で終了 -
break ラベル;
: ラベルがついている外側のループ全体を終了 - ❌ ラベルへ戻らない :
goto
ではないのでラベルに「戻る」動きではない
7. ループのネスト(入れ子)
ループの中にループを入れることも可能。
例: 九九の表を出力
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
System.out.print(i * j + "\t");
}
System.out.println();
}
実行結果
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
...
9 18 27 36 45 54 63 72 81
まとめ
文法 | 特徴 |
---|---|
for |
ループ回数が決まっている時に使う |
while |
条件を満たす限り実行(回数未定) |
do-while |
必ず 1 回は実行される |
for-each |
配列やコレクションの要素を順番に処理 |
break |
ループを強制終了 |
continue |
その回の処理をスキップ |
ラベル | 指定したループの次の繰り返しへ進む |
Test Tip
if, for, while, do whileなど{}省略可能
ただ、1行だけ!
if
int i = 2;
System.out.println("スタート");
if(i > 3)
System.out.println("iは3より大きいです");
System.out.println("終了");
出力
スタート
終了
for
for (int i = 0; i < 5; i++)
System.out.println(i);
while
int i = 0;
while (i < 3)
System.out.println(i++);
do-while
int i = 0;
do
System.out.println(i++);
while (i < 3);
Discussion