Java制御文(Control statement)の条件文(Conditional statement)

条件文(Conditional statement)

Javaには、if文とswitch文という2つの条件文があります。これらの文を使うことで、実行中に条件に基づいてプログラムの実行フローを制御できます。

if ~ else文

if文は、条件に応じて2つの文のうちどちらか一方を実行する条件文です。

if (条件式)
    実行文1;
else
    実行文2;

if文は条件式の内容に応じてtrueまたはfalseを返します。else文は必要な場合に記述し、不要な場合は省略できます。

package com.devkuma.tutorial.control.statement;

public class IfElse {

    public static void main(String[] args) {

        int a = 0;
        if (a == 1) {
            System.out.println("a는 1이다.");
        } else {
            System.out.println("a는 1 아니다.");
        }
    }
}

if ~ else if文

if ~ else if文は、if文を使って多重選択を可能にします。

if (条件式1)
    実行文1;
else if (条件式2)
    実行文2;
...
else
    実行文3;

Javaのすべての構文は、上から下へ順番に実行されます。最初の条件式が真と評価されると、その文を実行した後、if文を抜けます。最初の条件節が偽と評価されると、続けてelse if条件節を評価して実行します。

package com.devkuma.tutorial.control.statement;

public class IfElseIf {

    public static void main(String[] args) {

        int month = 3;

        String season = null;
        if (month == 1) {
            season = "winter";
        } else if (month == 2) {
            season = "winter";
        } else if (month == 3) {
            season = "spring";
        } else if (month == 4) {
            season = "spring";
        } else if (month == 5) {
            season = "spring";
        } else if (month == 6) {
            season = "summer";
        } else if (month == 7) {
            season = "summer";
        } else if (month == 8) {
            season = "summer";
        } else if (month == 9) {
            season = "autumn";
        } else if (month == 10) {
            season = "autumn";
        } else if (month == 11) {
            season = "autumn";
        } else if (month == 12) {
            season = "winter";
        }

        System.out.println("month=" + month + ", season=" + season);
    }
}

実行結果は次のとおりです。

month=3, season=spring

switch ~ case文

switch ~ case文は多重選択を可能にします。

switch (式) {
    case 値1:
        実行文1;
        break;
    case 値2:
        実行文2;
        break;
    .....
    case 値n:
        実行文n;
        break;
    default:
        デフォルト実行文;
}

case文のbreak文は任意です。breakを省略すると、実行はすぐ下のcase文へ移ります。これを利用して、複数のcase節を一つの実行文にまとめることができます。

package com.devkuma.tutorial.control.statement;

public class SwitchCase1 {

    public static void main(String[] args) {

        int a = 257;
        int result = a % 3;

        switch (result) {
        case 1:
            System.out.println(a + "는 3의 배수가 아니다.");
            break;
        case 2:
            System.out.println(a + "는 3의 배수가 아니다.");
            break;
        default:
            System.out.println(a + "는 3의 배수이다.");
            break;
        }
    }
}

case文のbreak文は任意です。break文を省略すると、実行はすぐ下のcase文へ移ります。したがって、上の例は次のように変更できます。

package com.devkuma.tutorial.control.statement;

public class SwitchCase2 {

    public static void main(String[] args) {

        int a = 257;
        int result = a % 3;

        switch (result) {
        case 1:
        case 2:
            System.out.println(a + "는 3의 배수가 아니다.");
            break;
        default:
            System.out.println(a + "는 3의 배수이다.");
            break;
        }
    }
}

case文の実行文は、breakに出会うか、最後のcase文またはdefault文に到達するまで実行され続けます。

上のif ~ else文の例は、次のように変更できます。

package com.devkuma.tutorial.control.statement;

public class SwitchCase3 {

    public static void main(String[] args) {

        int month = 3;

        String season = null;

        switch (month) {
        case 1:
        case 2:
        case 12:
            season = "winter";
            break;
        case 3:
        case 4:
        case 5:
            season = "spring";
            break;
        case 6:
        case 7:
        case 8:
            season = "summer";
            break;
        case 9:
        case 10:
        case 11:
            season = "autumn";
            break;
        default:
            break;
        }

        System.out.println("month=" + month + ", season=" + season);
    }
}

ネストされたswitch文

switch文の中に別のswitch文を含めることができます。ネストされたswitch文では、同じ値を持つcase文を自由に使用できます。

package com.devkuma.tutorial.control.statement;

public class SwitchCase4 {

    public static void main(String[] args) {

        int a = 1;
        int b = 2;

        switch (a) {
        case 1:
            switch (b) {
            case 0:
                System.out.println("a=1, b=0");
            case 1:
                System.out.println("a=1, b=1");
            }
            break;
        case 2:
            System.out.println("a=2");
            break;
        default:
            break;
        }
    }
}