Javaのif else分岐構造を徹底解説

 
 
Java は、if ステートメントと switch ステートメントの 2 種類の選択ステートメントをサポートしています。 if ステートメントは分岐制御の分岐条件としてブール式またはブール値を使用しますが、switch ステートメントは複数の整数値を照合して分岐制御を実現します。これらのステートメントを使用すると、プログラムの状態が実行されるまで分からない状況でも、プログラムの実行を制御できます。 C/ C++プログラミングの経験がない場合は、これら 2 つのステートメントの威力と柔軟性に驚かれるでしょう。

 

選択構造(分岐構造とも呼ばれます)は、逐次構造の判断ができないという欠点を解決し、条件に応じてどのステートメントブロックを実行するかを判断することができます。選択構造は、論理比較や関係比較などの条件判断を伴う計算に適しています。たとえば、仕事を辞める時間かどうかを判断したり、2 つの数字の大きさを判断したりするなどです。

スペースが限られているため、このセクションでは主に if ステートメントのさまざまな形式と使用法を紹介します。 switch ステートメントの使用法については、「 Java switch の場合」セクションで説明します。

構造体の場合

if ステートメントは、選択ステートメントに属する最もよく使用される条件分岐構造であり、条件ステートメントとも呼ばれます。

if 選択構造は、条件に従って判断され、処理される文法構造です。デフォルトでは、if ステートメントはそのすぐ下のステートメントの実行を制御します。ただし、ステートメント ブロックを使用すると、if ステートメントで複数のステートメントを制御できます。

if ステートメントの最も単純な文法形式は次のとおりです。これは、「特定の条件が満たされた場合に何らかの処理を実行する」という意味です。

if (condition) {
    //statement;
} 

その中でも「条件式」と「ステートメントブロック」の2つは重要な箇所です。

  1. condition: 条件式には任意の種類の論理式を使用でき、最後に返される結果はブール値である必要があります。値は、純粋なブール変数または定数、または関係演算子またはブール演算子を使用した式にすることができます。条件が true の場合、ステートメント ブロックは実行されます。条件が false の場合、ステートメント ブロックはバイパスされ、実行されません。
  2. statement: ステートメント ブロックは、1 つのステートメントまたは複数のステートメントにすることができます。ステートメントが 1 つだけの場合、条件ステートメントの中括弧 {} は省略できます。中括弧を省略するとプログラムが読みにくくなりますので、プログラミング仕様の観点から中括弧は省略しないでください。

例1

ユーザーがキーボードから数値を入力し、その数値が 100 より大きいかどうかを判断できる Java プログラムを作成します。 if 文を使用した実装コードは次のとおりです。

 public static void main(String[] args) {
    System.out.println("数字を入力してください:");
    Scanner input = new Scanner(System.in);
    int num = input.nextInt(); // キーボードからデータを受信

    // ユーザーが入力したデータが100より大きいかどうか判断する
    if (num > 100) {
        System.out.println("入力した数字は100より大きいです");
    }
    // ユーザーが入力したデータが100と等しいかどうか判断する
    if (num == 100) {
        System.out.println("入力した数字は100と等しいです");
    }
    // ユーザーが入力したデータが100より小さいかどうか判断する
    if (num < 100) {
        System.out.println("入力した数字は100より小さいです");
    }
} 

例 2

値がそれぞれ 50 と 34 である 2 つの変数 num1 と num2 があるとします。 if文を用いてnum1とnum2の大小関係を判定し、比較結果を出力する以下のプログラムを作成してください。

実装コードは次のとおりです。

 public static void main(String[] args) {
    int num1 = 50;
    int num2 = 34;
    if (num1 > num2) {
        System.out.println("num1がnum2より大きいです");
    }

    if (num1 == num2) {
        System.out.println("num1がnum2と等しいです");
    }

    if (num1 < num2) {
        System.out.println("num1がnum2より小さいです");
    }
} 

この選択文は、num1 の値と num2 の値の間の大小関係を判定します。ここでは num1 が 50、num2 が 34 であるため、実行後は「num1 は num2 より大きい」と出力されます。

例 3

上記の 2 つの case コードでは、各 if ステートメントにはステートメント ブロック内にステートメントが 1 つしか含まれていないため、中かっこは省略されています。この例では、ログイン システムのユーザー名、パスワード、確認コードが正しい必要があります。正しくないと、ログイン失敗とエラー プロンプトが表示されます。ステートメント ブロックには複数のステートメントがあるため、中括弧が必要です。コードは以下のように表示されます:

 public static void main(String[] args) {
    String username = "admin"; // ユーザー名
    String userpass = "123456"; // パスワード
    String code = "0001"; // 認証コード
    if (username != "admin" && userpass != "123456" && code != "0000") {
        System.out.println("ログイン失敗!");
        System.out.println("入力されたユーザー名、パスワード、認証コードを確認してください。");
    }
} 

ここでは、ログイン条件を検証するための if ステートメントに複雑な複合式が設定されています。実行後の出力は次のようになります。


ログイン失敗!
入力されたユーザー名、パスワード、認証コードを確認してください。

if-else 構造

単一の if ステートメントは、条件が満たされた場合にのみ使用でき、それ以外のことはできません (停止)。 if 文と else 文を組み合わせると 2 つの操作を定義できますが、このときの if…else 文は「条件が true の場合は 1 つの操作を実行し、そうでない場合はもう 1 つの操作を実行する」という意味になります。

if…else ステートメントを使用するための構文は次のとおりです。

 もし(式) {
    ステートメントブロック1;
} else {
    ステートメントブロック2;
} 

上記の文法形式では、if キーワードの後の式が true の場合はステートメント ブロック 1 が実行され、そうでない場合はステートメント ブロック 2 が実行されます。

例 4

例 3 では、num1 と num2 の大きさを比較するために、3 つの if 条件文を使用して、以上、等しい、未満の状況を判断します。以下では、if…else double 条件を使用して実現します。具体的なコードは次のとおりです。

 public static void main(String[] args) {
    int num1 = 50;
    int num2 = 34;

    // num1がnum2と等しい場合
    if (num1 == num2) {
        System.out.println("num1はnum2と等しいです");
    }
    // num1がnum2よりも大きい場合
    if (num1 > num2) {
        System.out.println("num1はnum2よりも大きいです");
    } else {
        // そうでなければ、num1はnum2よりも小さい
        System.out.println("num1はnum2よりも小さいです");
    }
} 

二重条件ステートメントにより、プログラムの可読性が向上しながら、記述されるコードの量が削減されます。単純化された結果は同じであり、実行後は「num1 は num2 より大きい」と出力されます。

複数の条件付き if-else-if ステートメント

if ステートメントの主な機能は、プログラムに分岐を提供することです。ただし、プログラム内にもう 1 つのブランチがあるだけでは不十分な場合や、プログラムのブランチが非常に複雑になる場合があり、その場合は複数ブランチの if…else if ステートメントの使用が必要になります。

通常、「ある条件が満たされていれば、ある処理を実行し、そうでなければ、別の条件が満たされていれば、別の処理を実行し…、これらの条件が満たされない場合は、最後の条件を実行する」と表現されます。

if…else if 複数分岐ステートメントの文法形式は次のとおりです。

 if(条件1) {
    処理1;
} else if(条件2) {
    処理2;
...
} else if(条件n) {
    処理n;
} else {
    処理n+1;
} 

else-if 構造は、実際には if-else 構造のマルチレベルの入れ子であることがわかります。明らかな特徴は、複数の分岐において 1 つの文グループのみが実行され、他の分岐は実行されないことです。この構造は、複数の判定結果を持つ分岐でも使用できます。

if…else if文を使用すると、式の値が順番に判定され、ある分岐の条件式の値が真の場合、その分岐に対応する文ブロックが実行され、分岐の外にジャンプします。 if ステートメント全体を使用してプログラムの実行を続行します。すべての式が false の場合、ステートメント ブロック n+1 を実行し、引き続き後続のプログラムを実行します。

例5

また、num1 と num2 のサイズの比較を例として、複数の条件で if…else if を使用する実装コードは次のとおりです。

 public static void main(String[] args) {
    int num1 = 50;
    int num2 = 34;

    if (num1 == num2) { // If num1 is equal to num2
        System.out.println("num1はnum2に等しいです");
    } else if (num1 > num2) { // If num1 is greater than num2
        System.out.println("num1はnum2より大きいです");
    } else { // Otherwise, it's less than
        System.out.println("num1はnum2より小さいです");
    }
} 

上記のコードに示すように、num1 と num2 は if ステートメントの「num1==num2」条件を満たしていないため、else if の「num1>num2」条件をテストし、条件を満たし、「num1はnum2より大きいです」と出力します。

例6

学校の成績の判断基準を、90点以上で「優秀」、90点未満で80点以上で「良好」、「不良」と評価できるとします。

 public static void main(String[] args) {
    System.out.println("試験の成績を入力してください:");
    Scanner input = new Scanner(System.in);
    int score = input.nextInt(); // キーボードからの入力受け取り
    if (score >= 90) { // 試験成績>=90
        System.out.println("優秀");
    } else if (score >= 80) { // 90>試験成績>=80
        System.out.println("良好");
    } else if (score >= 60) { // 80>試験成績>=60
        System.out.println("中等");
    } else { // 試験成績<60
        System.out.println("不可");
    }
} 

テストスコアが 90 点以上の場合は最初の if 文を実行し、次の 3 つの条件判定文は実行されません; テストスコアが 80 点以上 90 点未満の場合は最初の else if 文が実行されます。テストのスコアが 60 ~ 80 点で、60 点を含む場合は、2 番目の else if ステートメントを実行します。上記の 3 つの条件のいずれも満たされない場合は、else ステートメントを実行します。

ネストされた if の使用

if ステートメントの使用法は非常に柔軟で、単独で使用できるだけでなく、if ステートメント内に別の if ステートメントをネストすることもできます。同様に、if…else ステートメントと if…else if ステートメントを別の if 構造ステートメントにネストして、より深い判断を行うこともできます。

ネストされた if の構文は次のとおりです。

 if(条件式1) {
    if(条件式2) {
        実行ブロック1;
    } else {
        実行ブロック2;
    }
} else {
    if(条件式3) {
        実行ブロック3;
    } else if(条件式4) {
        実行ブロック4;
    } else {
        if(条件式n) {
            実行ブロックn;
        } else {
            実行ブロックn+1;
        }
    }
} 

上記の形式では、各 else はそれに最も近い if と一致し、他に対応する else がないことに注意してください。

例 7

今日が勤務日であれば仕事に行き、週末であれば遊びに行き、同時に週末の天気が晴れていれば屋外の遊び場に行き、晴れていなければ屋外の遊び場に行きます。室内遊び場へ。実装コードは次のとおりです。

 public static void main(String[] args) {
    String today = "週末";
    String weather = "晴れ";
    if (today.equals("週末")) {
        if (weather.equals("晴れ")) {
            System.out.println("屋外の遊園地に遊びに行く");
        } else {
            System.out.println("室内の遊園地に遊びに行く");
        }
    } else {
        System.out.println("仕事に行く");
    }
} 
 

「 Javaのif else分岐構造を徹底解説」についてわかりやすく解説!絶対に観るべきベスト2動画

【Java超入門コース】10.条件分岐|条件にあてはまればAという処理、あてはまらなければBという処理ができます【プログラミング初心者向け入門講座】
【Java #05】複雑な条件分岐のやり方【ゆっくり解説】
 
 
Java は、if ステートメントと switch ステートメントの 2 種類の選択ステートメントをサポートしています。 if ステートメントは分岐制御の分岐条件としてブール式またはブール値を使用しますが、switch ステートメントは複数の整数値を照合して分岐制御を実現します。これらのステートメントを使用すると、プログラムの状態が実行されるまで分からない状況でも、プログラムの実行を制御できます。 C/ C++プログラミングの経験がない場合は、これら 2 つのステートメントの威力と柔軟性に驚かれるでしょう。

 

選択構造(分岐構造とも呼ばれます)は、逐次構造の判断ができないという欠点を解決し、条件に応じてどのステートメントブロックを実行するかを判断することができます。選択構造は、論理比較や関係比較などの条件判断を伴う計算に適しています。たとえば、仕事を辞める時間かどうかを判断したり、2 つの数字の大きさを判断したりするなどです。

スペースが限られているため、このセクションでは主に if ステートメントのさまざまな形式と使用法を紹介します。 switch ステートメントの使用法については、「 Java switch の場合」セクションで説明します。

構造体の場合

if ステートメントは、選択ステートメントに属する最もよく使用される条件分岐構造であり、条件ステートメントとも呼ばれます。

if 選択構造は、条件に従って判断され、処理される文法構造です。デフォルトでは、if ステートメントはそのすぐ下のステートメントの実行を制御します。ただし、ステートメント ブロックを使用すると、if ステートメントで複数のステートメントを制御できます。

if ステートメントの最も単純な文法形式は次のとおりです。これは、「特定の条件が満たされた場合に何らかの処理を実行する」という意味です。

if (condition) {
    //statement;
} 

その中でも「条件式」と「ステートメントブロック」の2つは重要な箇所です。

  1. condition: 条件式には任意の種類の論理式を使用でき、最後に返される結果はブール値である必要があります。値は、純粋なブール変数または定数、または関係演算子またはブール演算子を使用した式にすることができます。条件が true の場合、ステートメント ブロックは実行されます。条件が false の場合、ステートメント ブロックはバイパスされ、実行されません。
  2. statement: ステートメント ブロックは、1 つのステートメントまたは複数のステートメントにすることができます。ステートメントが 1 つだけの場合、条件ステートメントの中括弧 {} は省略できます。中括弧を省略するとプログラムが読みにくくなりますので、プログラミング仕様の観点から中括弧は省略しないでください。

例1

ユーザーがキーボードから数値を入力し、その数値が 100 より大きいかどうかを判断できる Java プログラムを作成します。 if 文を使用した実装コードは次のとおりです。

 public static void main(String[] args) {
    System.out.println("数字を入力してください:");
    Scanner input = new Scanner(System.in);
    int num = input.nextInt(); // キーボードからデータを受信

    // ユーザーが入力したデータが100より大きいかどうか判断する
    if (num > 100) {
        System.out.println("入力した数字は100より大きいです");
    }
    // ユーザーが入力したデータが100と等しいかどうか判断する
    if (num == 100) {
        System.out.println("入力した数字は100と等しいです");
    }
    // ユーザーが入力したデータが100より小さいかどうか判断する
    if (num < 100) {
        System.out.println("入力した数字は100より小さいです");
    }
} 

例 2

値がそれぞれ 50 と 34 である 2 つの変数 num1 と num2 があるとします。 if文を用いてnum1とnum2の大小関係を判定し、比較結果を出力する以下のプログラムを作成してください。

実装コードは次のとおりです。

 public static void main(String[] args) {
    int num1 = 50;
    int num2 = 34;
    if (num1 > num2) {
        System.out.println("num1がnum2より大きいです");
    }

    if (num1 == num2) {
        System.out.println("num1がnum2と等しいです");
    }

    if (num1 < num2) {
        System.out.println("num1がnum2より小さいです");
    }
} 

この選択文は、num1 の値と num2 の値の間の大小関係を判定します。ここでは num1 が 50、num2 が 34 であるため、実行後は「num1 は num2 より大きい」と出力されます。

例 3

上記の 2 つの case コードでは、各 if ステートメントにはステートメント ブロック内にステートメントが 1 つしか含まれていないため、中かっこは省略されています。この例では、ログイン システムのユーザー名、パスワード、確認コードが正しい必要があります。正しくないと、ログイン失敗とエラー プロンプトが表示されます。ステートメント ブロックには複数のステートメントがあるため、中括弧が必要です。コードは以下のように表示されます:

 public static void main(String[] args) {
    String username = "admin"; // ユーザー名
    String userpass = "123456"; // パスワード
    String code = "0001"; // 認証コード
    if (username != "admin" && userpass != "123456" && code != "0000") {
        System.out.println("ログイン失敗!");
        System.out.println("入力されたユーザー名、パスワード、認証コードを確認してください。");
    }
} 

ここでは、ログイン条件を検証するための if ステートメントに複雑な複合式が設定されています。実行後の出力は次のようになります。


ログイン失敗!
入力されたユーザー名、パスワード、認証コードを確認してください。

if-else 構造

単一の if ステートメントは、条件が満たされた場合にのみ使用でき、それ以外のことはできません (停止)。 if 文と else 文を組み合わせると 2 つの操作を定義できますが、このときの if…else 文は「条件が true の場合は 1 つの操作を実行し、そうでない場合はもう 1 つの操作を実行する」という意味になります。

if…else ステートメントを使用するための構文は次のとおりです。

 もし(式) {
    ステートメントブロック1;
} else {
    ステートメントブロック2;
} 

上記の文法形式では、if キーワードの後の式が true の場合はステートメント ブロック 1 が実行され、そうでない場合はステートメント ブロック 2 が実行されます。

例 4

例 3 では、num1 と num2 の大きさを比較するために、3 つの if 条件文を使用して、以上、等しい、未満の状況を判断します。以下では、if…else double 条件を使用して実現します。具体的なコードは次のとおりです。

 public static void main(String[] args) {
    int num1 = 50;
    int num2 = 34;

    // num1がnum2と等しい場合
    if (num1 == num2) {
        System.out.println("num1はnum2と等しいです");
    }
    // num1がnum2よりも大きい場合
    if (num1 > num2) {
        System.out.println("num1はnum2よりも大きいです");
    } else {
        // そうでなければ、num1はnum2よりも小さい
        System.out.println("num1はnum2よりも小さいです");
    }
} 

二重条件ステートメントにより、プログラムの可読性が向上しながら、記述されるコードの量が削減されます。単純化された結果は同じであり、実行後は「num1 は num2 より大きい」と出力されます。

複数の条件付き if-else-if ステートメント

if ステートメントの主な機能は、プログラムに分岐を提供することです。ただし、プログラム内にもう 1 つのブランチがあるだけでは不十分な場合や、プログラムのブランチが非常に複雑になる場合があり、その場合は複数ブランチの if…else if ステートメントの使用が必要になります。

通常、「ある条件が満たされていれば、ある処理を実行し、そうでなければ、別の条件が満たされていれば、別の処理を実行し…、これらの条件が満たされない場合は、最後の条件を実行する」と表現されます。

if…else if 複数分岐ステートメントの文法形式は次のとおりです。

 if(条件1) {
    処理1;
} else if(条件2) {
    処理2;
...
} else if(条件n) {
    処理n;
} else {
    処理n+1;
} 

else-if 構造は、実際には if-else 構造のマルチレベルの入れ子であることがわかります。明らかな特徴は、複数の分岐において 1 つの文グループのみが実行され、他の分岐は実行されないことです。この構造は、複数の判定結果を持つ分岐でも使用できます。

if…else if文を使用すると、式の値が順番に判定され、ある分岐の条件式の値が真の場合、その分岐に対応する文ブロックが実行され、分岐の外にジャンプします。 if ステートメント全体を使用してプログラムの実行を続行します。すべての式が false の場合、ステートメント ブロック n+1 を実行し、引き続き後続のプログラムを実行します。

例5

また、num1 と num2 のサイズの比較を例として、複数の条件で if…else if を使用する実装コードは次のとおりです。

 public static void main(String[] args) {
    int num1 = 50;
    int num2 = 34;

    if (num1 == num2) { // If num1 is equal to num2
        System.out.println("num1はnum2に等しいです");
    } else if (num1 > num2) { // If num1 is greater than num2
        System.out.println("num1はnum2より大きいです");
    } else { // Otherwise, it's less than
        System.out.println("num1はnum2より小さいです");
    }
} 

上記のコードに示すように、num1 と num2 は if ステートメントの「num1==num2」条件を満たしていないため、else if の「num1>num2」条件をテストし、条件を満たし、「num1はnum2より大きいです」と出力します。

例6

学校の成績の判断基準を、90点以上で「優秀」、90点未満で80点以上で「良好」、「不良」と評価できるとします。

 public static void main(String[] args) {
    System.out.println("試験の成績を入力してください:");
    Scanner input = new Scanner(System.in);
    int score = input.nextInt(); // キーボードからの入力受け取り
    if (score >= 90) { // 試験成績>=90
        System.out.println("優秀");
    } else if (score >= 80) { // 90>試験成績>=80
        System.out.println("良好");
    } else if (score >= 60) { // 80>試験成績>=60
        System.out.println("中等");
    } else { // 試験成績<60
        System.out.println("不可");
    }
} 

テストスコアが 90 点以上の場合は最初の if 文を実行し、次の 3 つの条件判定文は実行されません; テストスコアが 80 点以上 90 点未満の場合は最初の else if 文が実行されます。テストのスコアが 60 ~ 80 点で、60 点を含む場合は、2 番目の else if ステートメントを実行します。上記の 3 つの条件のいずれも満たされない場合は、else ステートメントを実行します。

ネストされた if の使用

if ステートメントの使用法は非常に柔軟で、単独で使用できるだけでなく、if ステートメント内に別の if ステートメントをネストすることもできます。同様に、if…else ステートメントと if…else if ステートメントを別の if 構造ステートメントにネストして、より深い判断を行うこともできます。

ネストされた if の構文は次のとおりです。

 if(条件式1) {
    if(条件式2) {
        実行ブロック1;
    } else {
        実行ブロック2;
    }
} else {
    if(条件式3) {
        実行ブロック3;
    } else if(条件式4) {
        実行ブロック4;
    } else {
        if(条件式n) {
            実行ブロックn;
        } else {
            実行ブロックn+1;
        }
    }
} 

上記の形式では、各 else はそれに最も近い if と一致し、他に対応する else がないことに注意してください。

例 7

今日が勤務日であれば仕事に行き、週末であれば遊びに行き、同時に週末の天気が晴れていれば屋外の遊び場に行き、晴れていなければ屋外の遊び場に行きます。室内遊び場へ。実装コードは次のとおりです。

 public static void main(String[] args) {
    String today = "週末";
    String weather = "晴れ";
    if (today.equals("週末")) {
        if (weather.equals("晴れ")) {
            System.out.println("屋外の遊園地に遊びに行く");
        } else {
            System.out.println("室内の遊園地に遊びに行く");
        }
    } else {
        System.out.println("仕事に行く");
    }
} 
 

「 Javaのif else分岐構造を徹底解説」についてわかりやすく解説!絶対に観るべきベスト2動画

【Java超入門コース】10.条件分岐|条件にあてはまればAという処理、あてはまらなければBという処理ができます【プログラミング初心者向け入門講座】
【Java #05】複雑な条件分岐のやり方【ゆっくり解説】