005 条件分岐(if文のネスト) 017 解答例

import java.util.Scanner;

public class AgeGenderMessage {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("年齢を入力してください: ");
        int age = scanner.nextInt();

        System.out.print("性別を入力してください (男性または女性): ");
        String gender = scanner.next();

        // 年齢に応じたメッセージを表示
        if (age < 20) {
            System.out.println("未成年です");
        } else {
            if (gender.equalsIgnoreCase("女性")) {
                System.out.println("成人女性です");
            } else if (gender.equalsIgnoreCase("男性")) {
                System.out.println("成人男性です");
            } else {
                System.out.println("不明な情報です");
            }
        }

        scanner.close();
    }
}

このプログラムでは、if文のネストが使用され、年齢の評価後に性別の評価が行われています。これにより、ユーザーの年齢と性別に応じて適切なメッセージが表示されます。年齢が20歳未満の場合は「未成年です」、年齢が20歳以上で性別が「女性」の場合は「成人女性です」、年齢が20歳以上で性別が「男性」の場合は「成人男性です」と表示されます。それ以外の場合は「不明な情報です」が表示されます。

if文のネスト

「if文のネスト」とは、条件文(if文)内に別の条件文を組み込むことを指します。これにより、複雑な条件を効果的に処理できます。ネストされたif文は、外側の条件が真の場合に内側の条件を評価する方法を提供します。

以下は、if文のネストの基本的な構造と解説です。

if (外側の条件) {
    // 外側の条件が真の場合の処理
    if (内側の条件) {
        // 内側の条件が真の場合の処理
    }
}

外側の条件が真の場合、内側の条件が評価されます。外側の条件が偽の場合、内側の条件は評価されません。

例を通じて、if文のネストを理解しましょう。

int age = 24;
boolean isFemale = true;

if (age >= 20) {
    // 外側の条件:年齢が20歳以上の場合
    System.out.println("成人です");
    
    if (isFemale) {
        // 内側の条件:性別が女性の場合
        System.out.println("成人女性です");
    } else {
        // 内側の条件:性別が男性の場合
        System.out.println("成人男性です");
    }
} else {
    // 外側の条件:年齢が20歳未満の場合
    System.out.println("未成年です");
}

この例では、外側の条件は age >= 20(年齢が20歳以上)で、内側の条件は isFemale(性別が女性かどうか)です。外側の条件が真の場合、内側の条件が評価され、適切なメッセージが表示されます。

if文のネストは、複雑な条件を扱うために役立ちますが、過度のネストはコードを難解にする可能性があるため、適切に使用することが重要です。条件が複雑になりすぎる場合、他の方法や関数の使用を検討することもあります。

「005条件分岐」問題集リスト