Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaのif…else文の使い方を徹底解説!条件分岐の基本から応用まで

プログラミングでは、「特定の条件が満たされた場合にのみ実行したいコード」を書く場面がよくあります。

例えば、ECサイトでユーザーが住所を入力した場合にのみ注文を受け付けたり、コーヒーショップを経営していて、先週にコーヒーを5杯以上注文した顧客に割引を提供したいといったケースが挙げられます。

このような処理を実現するために使われるのが「条件分岐」です。条件分岐とは、条件がtrue(真)かfalse(偽)かを評価し、その結果に応じて特定のコードブロックを実行する仕組みのことです。Javaでは、if...else文という制御構文を使うことで、特定の条件が満たされた場合にのみコードブロックを実行できます。

この記事では、Javaにおけるif...else文の使い方を解説し、実際のJavaプログラムでの使用例をいくつか紹介します。

Javaのif文

最も基本的な条件分岐はif文です。if文は、条件式がtrueかfalseかを評価し、trueの場合にのみコードを実行します。条件がfalseと評価された場合、プログラムはif文をスキップし、残りの処理をそのまま続行します。

Javaでは、if文は次のように記述します。

if (condition_is_met) {
    // コードを実行する
}

順番に見ていきましょう。if文は条件(condition)を受け取ります。これはtrueまたはfalseを返すboolean式です。そして、条件がtrueと評価された場合に実行されるコードは、波括弧({})の中に記述します。

if文の中のコードは、可読性を高めるためにインデント(字下げ)して記述するのが一般的です。また、Javaの他のコード行とは異なり、if文の末尾にはセミコロンが必要ない点にも注意しましょう。

具体的な例で動作を確認してみます。コーヒーショップを経営していて、先週にコーヒーを5杯より多く購入した顧客に10%の割引を提供したいとします。この場合、顧客が割引対象かどうかを判定するために、次のようなコードを使用できます。

public class CheckDiscount {
    public static void main(String[] args) {
        int coffees_ordered_in_last_week = 4;
        int discount = 0;

        if (coffees_ordered_in_last_week > 5) {
            discount = 10;
        }

        System.out.println("This customer is eligible for a " + discount + "% discount.");
    }
}

このコードを実行すると、次の出力が得られます。

This customer is eligible for a 0% discount.

コードの内容を分解してみましょう。まず、CheckDiscountというクラスを宣言し、このプログラムのコードをその中に記述しています。

次に、顧客が先週注文したコーヒーの杯数を保持する変数coffees_ordered_in_last_weekを宣言します。続いて、顧客が受けられる割引率を管理する変数「discount」を初期化します。

その次の行では、if文を使ってcoffees_ordered_in_last_weekが5より大きいかどうかを判定しています。大きい場合、顧客は10%の割引の対象となり、そうでない場合は、プログラムはif文内のコードをスキップします。

この例では、顧客が先週注文したコーヒーは4杯だけなので、discount = 10という行は実行されません。プログラムの最後には、「This customer is eligible for a [X]% discount.」というメッセージがコンソールに出力されます。Xには、プログラムが判定した割引率が入ります。

Javaのif…else文

if文だけを使う場合、コードが実行されるのは条件がtrueのときだけです。しかし多くの場合、条件がfalseだったときに別のコードブロックを実行したいこともあるでしょう。

else文はif文の後に記述され、条件を持ちません。else文は省略可能で、if文の条件がfalseと評価された場合にのみ実行されます。

Javaのif...else文の構文は次のとおりです。

if (condition_is_met) {
    // コードを実行する
} else {
    // 別のコードを実行する
}

先ほどの例を使って、実際の動作を見てみましょう。土曜日にすべての顧客が5%割引の対象となるプロモーションを実施しているとします。今日は土曜日なので、各顧客に5%の割引を適用したいところですが、この割引は先週にコーヒーを5杯より多く注文していない人のみが対象です。5杯より多く注文した人は、すでに10%割引の対象となっているためです。

そこで、先週5杯より多くコーヒーを注文した顧客には10%の割引を、それ以外の顧客には5%の割引を適用するために、次のプログラムを使用できます。

class CheckDiscount {
    public static void main(String[] args) {
        int coffees_ordered_in_last_week = 4;
        int discount = 0;

        if (coffees_ordered_in_last_week > 5) {
            discount = 10;
        } else {
            discount = 5;
        }

        System.out.println("This customer is eligible for a " + discount + "% discount.");
    }
}

このコードの出力は次のとおりです。

This customer is eligible for a 5% discount.

このコードの動作は最初の例とほぼ同じですが、今回はelse文を追加している点が異なります。else文は、coffees_ordered_in_last_week > 5という条件がfalseと評価された場合に実行されます。この例では、顧客はコーヒーを5杯注文していないため、条件はfalseと評価されます。

その結果、プログラムはelseブロックの中身を実行し、変数discountの値を5に設定します。したがって、プログラムが顧客の割引率を出力するときには、5%と表示されるのです。

Javaのif…else if文

複数の条件を評価し、どの条件がtrueかに応じて異なるコードを実行したい場合もあります。そんなときに役立つのがif...else if文です。if...else if文は、まず1つ目の条件を判定し、それがfalseだった場合に後続の条件を順番に評価していきます。

Javaのif...else if文の構文は次のとおりです。

if (condition1_is_met) {
    // 条件1のコードを実行する
} else if (condition2_is_met) {
    // 条件2のコードを実行する
} else {
    // その他のコードを実行する
}

if文は上から下へと順番に評価されます。ある条件式がtrueと評価されると、それに対応するブロック内のコードが実行されます。すべての条件式がfalseだった場合は、else文の中のコードが実行されます。

例えば、先週にコーヒーを10杯より多く注文した顧客全員に15%の割引を提供したいとしましょう。こうした顧客は友人や職場のためにまとめて注文することが多い優良顧客なので、できる限り維持したい存在です。

土曜日の5%割引や、5杯超で10%割引の仕組みに加えて、この15%割引も提供するには、次のようなコードを使用できます。

class CheckDiscount {
    public static void main(String[] args) {
        int coffees_ordered_in_last_week = 4;
        int discount = 0;

        if (coffees_ordered_in_last_week > 10) {
            discount = 15;
        } else if (coffees_ordered_in_last_week > 5) {
            discount = 10;
        } else {
            discount = 5;
        }

        System.out.println("This customer is eligible for a " + discount + "% discount.");
    }
}

このコードの出力は次のとおりです。

This customer is eligible for a 5% discount.

今回の顧客は先週コーヒーを4杯しか注文していないため、else文の中身が実行されます。もし顧客が5杯より多く注文していれば、変数discountの値は10に設定され、10杯より多く注文していれば15に設定されます。

なお、条件は上から順に評価されるため、より厳しい条件(10杯超)を先に記述するのがポイントです。もし「5杯超」の条件を先に書いてしまうと、10杯以上注文した顧客も最初の条件でtrueと評価されてしまい、15%割引のブロックが実行されなくなります。

まとめ

Javaのif文は、特定の条件がtrueと評価された場合にコードブロックを実行するために使われます。if...else文はif文と組み合わせて使い、条件がfalseと評価された場合に別のコードを実行できます。さらに、if...else if文を使えば、複数の条件を順番に評価することも可能です。

この記事では、具体例を挙げながら、if文、if...else文、if...else if文を使ってJavaプログラムの流れを制御する方法を解説しました。これであなたも、プロのようにJavaの条件分岐を使いこなせるはずです!

  1. JavaのMath.random()メソッド徹底解説!乱数生成の基本から範囲指定まで

    JavaのMath.random()メソッドは、0.0以上1.0未満の擬似乱数(疑似ランダムな数値)を生成するためのメソッドです。生成された乱数に別の数値を掛けることで、0〜1以外の任意の範囲の乱数を取得することもできます。結果が0になることはあっても、1以上になることはありません。 プログラミングで乱数が必要になる場面 プログラミングをしていると、ランダムな数値を生成したい場面によく出会います。例えば、クルーズ船会社を運営しているとしましょう。顧客の注文番号として使う予約参照番号をランダムに生成したり、数当てゲーム用のランダムな数字を作りたいといったケースが考えられます。 Javaには、乱

  2. C言語の「else ifラダー」条件文の使い方を徹底解説!基本構文から実行例まで

    else ifラダー(階段状条件分岐)とは?「else ifラダー」とは、複数の条件の中から該当するものを選んで処理を実行する、いわゆる多方向分岐を記述する際に最も一般的に使われる方法です。条件式を上から順番に評価していき、最初に真(true)となった条件に対応する処理だけが実行され、残りの分岐はすべてスキップされます。基本構文else ifラダーの基本的な書き方は以下の通りです。if (condition1) stmt1; else if (condition2) stmt2; - - - - - - - - - - else if (conditio