【6日でできるJava入門】制御文⑤ if-else文による分岐

 プログラムでは、ある条件によって処理を分岐させたい場面がたくさんあります。そのために使うのが「if-else文」です。if文だけでは「条件が真(true)」のときしか処理できませんが、if-else文を使うと「真のとき」と「偽のとき」両方に異なる処理を記述できます。また、複数の分岐が必要な場合は「if-else if-else」を使います。
ここでは、基本構文から応用までサンプルプログラムを用いてわかりやすく解説します。


1.if-else文の基本

1.1. if-else文の構文と基本例

if (条件式) {
    // 条件が真のときに実行されるブロック
} else {
    // 条件が偽のときに実行されるブロック
}

if-else文は次のような構造です。

サンプルプログラム:正解・不正解判定

ファイル名: lesson12_1.java

public class lesson12_1 {
    public static void main(String[] args) {
        int correct = 2;
        int answer = 3;
        int score = 0;

        if (correct == answer) {
            score++;
            System.out.println("正解です!");
        } else {
            System.out.println("不正解です。");
        }
        System.out.println("現在の得点: " + score);
    }
}

実行結果

不正解です。
現在の得点: 0

1.2. else ifによる多分岐

if-else文をさらに発展させた「else if」を使うと、複数の条件ごとに異なる処理を行えます。

if (条件1) {
    // 条件1が真
} else if (条件2) {
    // 条件2が真
} else {
    // それ以外
}

サンプルプログラム:学年判定

ファイル名: lesson12_2.java

public class lesson12_2 {
    public static void main(String[] args) {
        int gradeCode = 5; // 学年を表すコード

        if (gradeCode == 0 || gradeCode == 1) {
            System.out.println("1年生です。");
        } else if (gradeCode >= 2 && gradeCode <= 4) {
            System.out.println("2年生です。");
        } else if (gradeCode > 4 && gradeCode < 8) {
            System.out.println("3年生です。");
        } else {
            System.out.println("4年生以上です。");
        }
    }
}

実行結果

3年生です。

2.if-else文の応用例

2.1. ループと組み合わせて複数パターンを判定

サンプルプログラム:0~9のコードで学年判定

ファイル名: lesson12_3.java

public class lesson12_3 {
    public static void main(String[] args) {
        for (int n = 0; n < 10; n++) {
            if (n == 0 || n == 1) {
                System.out.println(n + " = 1年生");
            } else if (n >= 2 && n <= 4) {
                System.out.println(n + " = 2年生");
            } else if (n > 4 && n < 8) {
                System.out.println(n + " = 3年生");
            } else {
                System.out.println(n + " = 4年生以上");
            }
        }
    }
}

実行結果

0 = 1年生
1 = 1年生
2 = 2年生
3 = 2年生
4 = 2年生
5 = 3年生
6 = 3年生
7 = 3年生
8 = 4年生以上
9 = 4年生以上

2.2. ネストしたif-else文

 if-else文は入れ子にすることもできます。たとえば、さらに細かい条件分岐をしたい場合などに利用されます。

ファイル名: lesson12_4.java

public class lesson12_4 {
    public static void main(String[] args) {
        int x = 85;

        if (x >= 60) {
            if (x >= 80) {
                System.out.println("優秀です");
            } else {
                System.out.println("合格です");
            }
        } else {
            System.out.println("不合格です");
        }
    }
}

実行結果

優秀です

表:if-else構造のまとめ

構文例用途・意味
if (条件) { ... } else { ... }条件が真ならif側、偽ならelse側
if (a > 0) { ... } else if (...) { ... } else { ... }複数の条件を順に判定・分岐
if (条件1) { if (条件2) { ... } }入れ子にして、さらに細かい判定

まとめ

  • if-else文を使えば「条件が成立しない場合」の処理も記述できる。
  • else ifを使えば複数の条件分岐も実現できる。
  • 複雑な条件や細かい分岐には入れ子(ネスト)も活用できる。