チュートリアル

Java基礎:条件分岐とループ

Java入門制御構文
広告エリア

条件分岐

if文

int age = 20;

if (age >= 20) {
    System.out.println("成人です");
} else if (age >= 13) {
    System.out.println("ティーンエイジャーです");
} else {
    System.out.println("子供です");
}

三項演算子

int age = 20;
String status = (age >= 20) ? "成人" : "未成年";
System.out.println(status);

switch文

int day = 3;

switch (day) {
    case 1:
        System.out.println("月曜日");
        break;
    case 2:
        System.out.println("火曜日");
        break;
    case 3:
        System.out.println("水曜日");
        break;
    default:
        System.out.println("その他");
}

switch式(Java 14以降)

int day = 3;

String dayName = switch (day) {
    case 1 -> "月曜日";
    case 2 -> "火曜日";
    case 3 -> "水曜日";
    case 4 -> "木曜日";
    case 5 -> "金曜日";
    case 6, 7 -> "週末";
    default -> "不明";
};

System.out.println(dayName);  // "水曜日"

パターンマッチング(Java 21以降)

Object obj = "Hello";

// instanceof のパターンマッチング
if (obj instanceof String s) {
    System.out.println(s.toUpperCase());
}

// switch のパターンマッチング
String result = switch (obj) {
    case Integer i -> "整数: " + i;
    case String s -> "文字列: " + s;
    case null -> "null";
    default -> "その他";
};

ループ

for文

// 基本のfor文
for (int i = 0; i < 5; i++) {
    System.out.println(i);
}

// 逆順
for (int i = 4; i >= 0; i--) {
    System.out.println(i);
}

// ステップを変更
for (int i = 0; i < 10; i += 2) {
    System.out.println(i);  // 0, 2, 4, 6, 8
}

拡張for文(for-each)

int[] numbers = {1, 2, 3, 4, 5};

for (int num : numbers) {
    System.out.println(num);
}

// 文字列配列
String[] fruits = {"apple", "banana", "orange"};
for (String fruit : fruits) {
    System.out.println(fruit);
}

while文

int count = 0;

while (count < 5) {
    System.out.println(count);
    count++;
}

do-while文

int count = 0;

do {
    System.out.println(count);
    count++;
} while (count < 5);

// 最低1回は実行される
int x = 10;
do {
    System.out.println("実行されます");
} while (x < 5);  // 条件はfalseだが1回は実行

break と continue

// break - ループを抜ける
for (int i = 0; i < 10; i++) {
    if (i == 5) {
        break;
    }
    System.out.println(i);  // 0, 1, 2, 3, 4
}

// continue - 次の反復へ
for (int i = 0; i < 10; i++) {
    if (i % 2 == 0) {
        continue;
    }
    System.out.println(i);  // 1, 3, 5, 7, 9
}

ラベル付きbreak/continue

outer:
for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        if (i == 1 && j == 1) {
            break outer;  // 外側のループを抜ける
        }
        System.out.println(i + ", " + j);
    }
}

ネストしたループ

// 九九の表
for (int i = 1; i <= 9; i++) {
    for (int j = 1; j <= 9; j++) {
        System.out.printf("%3d", i * j);
    }
    System.out.println();
}

実践例:素数判定

public class PrimeChecker {
    public static boolean isPrime(int n) {
        if (n < 2) {
            return false;
        }
        for (int i = 2; i <= Math.sqrt(n); i++) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        // 1から100までの素数を表示
        for (int i = 1; i <= 100; i++) {
            if (isPrime(i)) {
                System.out.println(i);
            }
        }
    }
}

実践例:フィボナッチ数列

public class Fibonacci {
    public static void main(String[] args) {
        int n = 10;  // 10項まで表示
        int a = 0, b = 1;

        System.out.print(a + " " + b);

        for (int i = 2; i < n; i++) {
            int c = a + b;
            System.out.print(" " + c);
            a = b;
            b = c;
        }
        // 0 1 1 2 3 5 8 13 21 34
    }
}

まとめ

  • if/else if/elseで条件分岐
  • switch式で値を返す分岐(Java 14以降)
  • パターンマッチングで型による分岐(Java 21以降)
  • for文で回数指定のループ
  • 拡張for文(for-each)でコレクション走査
  • while/do-whileで条件付きループ
  • breakでループを抜け、continueで次の反復へ

次回はメソッドについて学びます。

広告エリア