Java 逆引き集 | 条件分岐(if / switch) - ビジネスロジックの分岐

Java Java
スポンサーリンク
スポンサーリンク

条件分岐のイメージをつかむ

条件分岐は「状況に応じて、やることを変える」ための仕組みです。 日常でやっている「雨なら傘を持つ、晴れなら持たない」をコードで書くのが if / switch です。

Javaでは、ビジネスロジックを組むときに「この条件ならAの処理、それ以外ならBの処理」といった分岐が大量に出てきます。 そのときの主役が if 文と switch 文で、これをきちんと理解すると「プログラムが考えている感じ」が一気に見えてきます。

if文の基本構造と考え方

if文の基本形

if文は「もし〜なら」の一番シンプルな形です。

int score = 80;

if (score >= 60) {
    System.out.println("合格です!");
}
Java

if (条件式) のかっこの中が true のときだけ、波かっこの中の処理が実行されます。 false のときは、そのブロックは丸ごとスキップされます。

ここで重要なのは「条件式は必ず boolean(true / false)になる式で書く」ということです。 score >= 60 は「60以上かどうか」を判定する比較演算子で、結果は true か false のどちらかになります。

if-else で「そうでなければ」を書く

「合格なら〜、そうでなければ〜」のように、両方のパターンを書きたいときは else を使います。

int score = 45;

if (score >= 60) {
    System.out.println("合格です!");
} else {
    System.out.println("不合格です。もう一度チャレンジしましょう。");
}
Java

条件式が true のときは if ブロックだけが実行され、false のときは else ブロックだけが実行されます。 「どちらか一方だけが必ず実行される」というのが if-else のポイントです。

else if で複数条件を分ける

点数に応じて「S評価 / A評価 / B評価 / C評価」のように、3つ以上の分岐をしたいときは else if をつなげます。

int score = 75;

if (score >= 90) {
    System.out.println("評価: S");
} else if (score >= 70) {
    System.out.println("評価: A");
} else if (score >= 50) {
    System.out.println("評価: B");
} else {
    System.out.println("評価: C");
}
Java

ここで超重要なのは「上から順番に評価されて、最初に true になった枝だけが実行される」というルールです。 score = 75 の場合、score >= 90 は false ですが、次の score >= 70 が true になるので、そのブロックだけが実行され、残りはもうチェックされません。

この「上から順にチェックされて、最初に当たったところで終わる」という性質を理解しておくと、条件の順番を間違えてバグるのを防げます。

複数条件を組み合わせる if(論理演算子)

AND / OR / NOT のイメージ

ビジネスロジックでは「年齢が20以上 かつ 会員である」「土日 または 祝日なら休日扱い」のように、複数条件を組み合わせることが多いです。 そのときに使うのが論理演算子です。

代表的なものは次の3つです。

// AND(かつ)
if (age >= 20 && isMember) { ... }

// OR(または)
if (day.equals("土") || day.equals("日")) { ... }

// NOT(ではない)
if (!isHoliday) { ... }
Java

&& は「両方 true のときだけ true」、|| は「どちらか一方でも true なら true」、! は「true と falseをひっくり返す」です。 これを組み合わせることで、「現役世代」「入場資格あり」「キャンペーン対象外」などのビジネス条件を自然に表現できます。

文字列比較での equals と == の違い(ここはかなり重要)

文字列を条件に使うとき、初心者がよくハマるのが ==equals の違いです。

String role = "ADMIN";

if (role.equals("ADMIN")) {
    System.out.println("管理者です");
}
Java

文字列の内容を比べたいときは、必ず equals を使います。 == は「同じ場所のオブジェクトかどうか」を比べる演算子で、文字列の内容比較には向きません。

ここを間違えると、「条件が合っているはずなのに if に入らない」という謎現象が起きるので、今のうちに「文字列は equals」と体に刻んでおくといいです。

switch文の基本構造と使いどころ

switch文の基本形

switch文は「ある値がどれに当てはまるか」で分岐したいときに使います。 「メニュー番号」「曜日」「ステータスコード」など、選択肢がはっきりしているときに向いています。

int menu = 2;

switch (menu) {
    case 1:
        System.out.println("ラーメンを選びました");
        break;
    case 2:
        System.out.println("カレーを選びました");
        break;
    case 3:
        System.out.println("ハンバーグを選びました");
        break;
    default:
        System.out.println("メニューにありません");
        break;
}
Java

switch (式) の式の値に応じて、対応する case のブロックが実行されます。 どの case にも当てはまらないときは default が実行されます。

break の役割(ここは絶対に押さえておく)

switch文で超重要なのが break です。 break を書かないと、次の case に処理が「流れ落ちて」しまいます(フォールスルー)。

int value = 1;

switch (value) {
    case 1:
        System.out.println("A");
        // break をわざと書かない
    case 2:
        System.out.println("B");
}
Java

この場合、value == 1 なのでまず「A」が表示され、そのまま case 2 にも処理が流れて「B」まで表示されます。 意図せず複数の case が実行されるので、初心者のうちは「case の最後には必ず break」と覚えておくのが安全です。

switch で使える型と文字列の switch

Javaの switch で使える型は、int, short, byte, char, enum, String などに限られています。 booleanfloat, double は使えないので、そういう条件は if で書くことになります。

文字列の switch もよく使います。

String day = "火曜日";

switch (day) {
    case "月曜日":
        System.out.println("週の始まりです");
        break;
    case "火曜日":
        System.out.println("少し慣れてきた頃ですね");
        break;
    case "金曜日":
        System.out.println("もうすぐ週末!");
        break;
    default:
        System.out.println("普通の日です");
        break;
}
Java

「決まった候補の中から、どれか1つに当てはめる」タイプのロジックは、if を連ねるより switch の方が見通しがよくなります。

if と switch の使い分け(ビジネスロジック視点)

if を選ぶ場面

if が得意なのは「範囲や比較が絡む条件」「複数条件の組み合わせ」です。

int age = 30;

if (age >= 18 && age < 65) {
    System.out.println("現役世代");
} else {
    System.out.println("現役世代ではない");
}
Java

年齢や点数のように「以上」「未満」「〜かつ〜」といった条件は、if の方が自然に書けます。 また、booleandouble など switch では扱えない型も、if なら自由に使えます。

switch を選ぶ場面

switch が得意なのは「選択肢がはっきり決まっているとき」です。

int status = 2;

switch (status) {
    case 1:
        System.out.println("受付中");
        break;
    case 2:
        System.out.println("処理中");
        break;
    case 3:
        System.out.println("完了");
        break;
    default:
        System.out.println("不明なステータス");
        break;
}
Java

メニュー番号、曜日、ステータスコード、コマンド名など、「この値ならこの処理」というマッピングが明確なときは switch の方が読みやすくなります。

ざっくりした判断基準

条件に「範囲」「大小」「複数条件の組み合わせ」が入っているなら if。 「決まった候補のどれかに一致するかどうか」なら switch。

迷ったときは「この条件は比較が必要か? それとも値の一致か?」という視点で考えると、自然にどちらを使うか決まっていきます。

ミニ練習問題とビジネスロジックへのつなげ方

練習1:料金区分の判定(if / else if)

次の仕様を if で書いてみてください。

年齢に応じて料金区分を決める。

  • 0〜12歳:子ども料金
  • 13〜64歳:大人料金
  • 65歳以上:シニア料金

ヒントは「上から順に条件を評価して、最初に当てはまったところで終わる」という性質を活かすことです。 年齢の範囲が重ならないように条件を書くのがポイントになります。

練習2:メニュー選択(switch)

次の仕様を switch で書いてみてください。

メニュー番号に応じて料理名を表示する。

1:ラーメン 2:カレー 3:ハンバーグ それ以外:メニューにありません

ここでは「break を忘れるとどうなるか」をわざと試してみると、switch の挙動が体に染み込みます。

ビジネスロジックを意識した書き方

実務では「仕様書に書かれた条件」をコードに落とし込むことがほとんどです。 たとえば「会員ステータスが GOLD かつ 有効期限内なら割引を適用する」「注文ステータスが SHIPPED ならキャンセル不可」など。

そのときに大事なのは、単に動くコードを書くことではなく、「仕様をそのまま読めるような条件式」にすることです。 if / switch の書き方を丁寧に選ぶことで、「このコードは何を判断しているのか」が、未来の自分や他の人にも伝わるようになります。

タイトルとURLをコピーしました