条件文

条件文により、プログラムは異なる条件に基づいて異なるコードを実行できます。このレッスンでは、Javaの条件ロジックを学びます。

if文

if文は最も基本的な条件チェックです。

構文

JAVA
if (条件) {
    // 条件がtrueの場合に実行
}

例:簡単なif

JAVA
public class IfDemo {
    public static void main(String[] args) {
        int age = 20;
        
        if (age >= 18) {
            System.out.println("成人です");
        }
    }
}
▶ 試してみよう

if-else文

条件がfalseの場合、elseブロックのコードが実行されます。

構文

JAVA
if (条件) {
    // 条件がtrueの場合に実行
} else {
    // 条件がfalseの場合に実行
}

例:if-else

JAVA
public class IfElseDemo {
    public static void main(String[] args) {
        int age = 15;
        
        if (age >= 18) {
            System.out.println("成人です");
        } else {
            System.out.println("未成年です");
        }
    }
}
▶ 試してみよう

if-else if-else文

複数の条件チェックに使用されます。

構文

JAVA
if (条件1) {
    // 条件1がtrueの場合に実行
} else if (条件2) {
    // 条件2がtrueの場合に実行
} else if (条件3) {
    // 条件3がtrueの場合に実行
} else {
    // 上記の条件がすべて満たされない場合に実行
}

例:成績計算

JAVA
public class GradeDemo {
    public static void main(String[] args) {
        int score = 85;
        
        if (score >= 90) {
            System.out.println("優秀");
        } else if (score >= 80) {
            System.out.println("良好");
        } else if (score >= 70) {
            System.out.println("平均");
        } else if (score >= 60) {
            System.out.println("及格");
        } else {
            System.out.println("不及格");
        }
    }
}
▶ 試してみよう
💡 注意: 条件は上から下に評価されます。条件がtrueになると、対応するコードが実行され、それ以降の条件はチェックされません。

ネストされたif

if文は互いにネストすることができます。

例:ネストされたif

JAVA
public class NestedIfDemo {
    public static void main(String[] args) {
        int age = 25;
        boolean hasID = true;
        
        if (age >= 18) {
            if (hasID) {
                System.out.println("入場許可");
            } else {
                System.out.println("IDを提示してください");
            }
        } else {
            System.out.println("未成年者は入場できません");
        }
    }
}
▶ 試してみよう

switch文

switch文は、変数を複数の固定値と照合するのに最適です。

構文

JAVA
switch (変数) {
    case 値1:
        // 変数が値1と等しい場合に実行
        break;
    case 値2:
        // 変数が値2と等しい場合に実行
        break;
    default:
        // どのケースにも一致しない場合に実行
}

例:曜日

JAVA
public class SwitchDemo {
    public static void main(String[] args) {
        int day = 3;
        
        switch (day) {
            case 1:
                System.out.println("月曜日");
                break;
            case 2:
                System.out.println("火曜日");
                break;
            case 3:
                System.out.println("水曜日");
                break;
            case 4:
                System.out.println("木曜日");
                break;
            case 5:
                System.out.println("金曜日");
                break;
            case 6:
                System.out.println("土曜日");
                break;
            case 7:
                System.out.println("日曜日");
                break;
            default:
                System.out.println("無効な日");
        }
    }
}
▶ 試してみよう
⚠️ breakの目的: breakがないと、プログラムは次のcaseの実行を継続します。これは「フォールスルー」と呼ばれます。

フォールスルーの使用

フォールスルーは、週末のチェックなど、場合によっては便利です:

JAVA
public class SwitchFallThrough {
    public static void main(String[] args) {
        int day = 6;
        String type;
        
        switch (day) {
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                type = "平日";
                break;
            case 6:
            case 7:
                type = "週末";
                break;
            default:
                type = "無効";
        }
        
        System.out.println(day + "日目は" + type);
    }
}

拡張switch(Java 14+)

Java 14では、より簡潔な拡張switch構文が導入されました:

JAVA
public class EnhancedSwitch {
    public static void main(String[] args) {
        int day = 3;
        
        String dayName = switch (day) {
            case 1 -> "月曜日";
            case 2 -> "火曜日";
            case 3 -> "水曜日";
            case 4 -> "木曜日";
            case 5 -> "金曜日";
            case 6 -> "土曜日";
            case 7 -> "日曜日";
            default -> "無効";
        };
        
        System.out.println(dayName);  // 水曜日
    }
}

Scannerによるユーザー入力

Scannerクラスはユーザーからのキーボード入力を取得できます。

使用手順

JAVA
// 1. Scannerクラスをインポート
import java.util.Scanner;

// 2. Scannerオブジェクトを作成
Scanner scanner = new Scanner(System.in);

// 3. 入力を読み取る
int num = scanner.nextInt();      // 整数を読み取る
double d = scanner.nextDouble();  // 浮動小数点数を読み取る
String s = scanner.nextLine();    // テキスト行を読み取る

// 4. scannerを閉じる
scanner.close();

例:ユーザー入力チェック

JAVA
import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("年齢を入力してください:");
        int age = scanner.nextInt();
        
        if (age >= 18) {
            System.out.println("成人です");
        } else {
            System.out.println("未成年です");
        }
        
        scanner.close();
    }
}
▶ 試してみよう

例:簡単な電卓

JAVA
import java.util.Scanner;

public class Calculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("最初の数値を入力:");
        double num1 = scanner.nextDouble();
        
        System.out.print("演算子を入力(+ - * /):");
        char operator = scanner.next().charAt(0);
        
        System.out.print("2番目の数値を入力:");
        double num2 = scanner.nextDouble();
        
        double result;
        
        switch (operator) {
            case '+':
                result = num1 + num2;
                System.out.println(num1 + " + " + num2 + " = " + result);
                break;
            case '-':
                result = num1 - num2;
                System.out.println(num1 + " - " + num2 + " = " + result);
                break;
            case '*':
                result = num1 * num2;
                System.out.println(num1 + " * " + num2 + " = " + result);
                break;
            case '/':
                if (num2 != 0) {
                    result = num1 / num2;
                    System.out.println(num1 + " / " + num2 + " = " + result);
                } else {
                    System.out.println("エラー:ゼロで割ることはできません");
                }
                break;
            default:
                System.out.println("エラー:サポートされていない演算子");
        }
        
        scanner.close();
    }
}
▶ 試してみよう

❓ よくある質問

Q if条件には括弧が必要ですか?
A はい、条件は括弧で囲む必要があります。単一の文でも、コードブロックに波括弧を使用することをお勧めします。
Q switchはどの型をサポートしていますか?
A switchはbyte、short、int、char、String(Java 7+)、enumをサポートしています。long、float、doubleはサポートしていません。
Q breakを省略できますか?
A はい、ただしフォールスルーが発生します。フォールスルーが意図的な場合は、説明のコメントを追加してください。

📖 まとめ

📝 演習

  1. うるう年: 年を入力し、うるう年かどうかを判定
  2. 成績計算: 点数(0-100)を入力し、成績(優秀/良好/平均/及格/不及格)を出力
  3. 電卓: Scannerを使用して簡単な電卓を構築

次のレッスン

次のレッスンでは、ループを学びます — プログラムに特定の操作を繰り返させます。

100%