間違えやすいif文の落とし穴5選!知らずに損してない?

if文について Java

「if文って簡単そうに見えるけど、書いてみるとエラーが出たり、思った通りに動かなかったりして難しい…」そんな経験はありませんか?
私もJavaを学びはじめた頃、「elseの位置が変」「ネストが深すぎてわけがわからない」など、多くの壁にぶつかりました。
この記事では、if文の基礎から応用までを、小学5年生でも理解できるように、シンプルな言葉とコード例を使ってわかりやすく解説します。
この記事を読んだ読者からは「今までで一番スッキリ理解できた」「ようやくエラーの意味がわかった!」という声を多数いただいています。
「if (score > 80)」の意味や、「else if」を使った場合の流れも、例と一緒に見ていけば自然にわかるようになります。
さあ、if文マスターへの一歩を踏み出しましょう!

if文の基本的な書き方がわからない

if文は「ある条件が正しければ、特定の処理を実行する」ための構文です。
プログラムには「条件によって動きを変える」場面がたくさんあります。たとえば「点数が80点以上なら“合格”と表示する」といった条件分岐がそれです。
Javaでのif文の基本形はこちらです。

if (条件) {
    // 条件がtrueのとき実行される処理
}

例えば

int score = 85;
if (score >= 80) {
    System.out.println("合格です!");
}

このコードでは、scoreが80以上なら「合格です!」と表示されます。

【注意点】

  • 条件にはtruefalseになる式を書く必要があります。
  • {}(中カッコ)は、処理が1行でも基本的に付けるのが安全です。
  • セミコロン;をifの直後に書いてしまうと、処理が実行されないというバグにつながります。

❌ ダメな例:

if (score >= 80); {
    System.out.println("合格"); // ← これは常に実行されてしまう!
}

if文は「条件に応じて動きを変える」最初の一歩。ルールさえ守れば、とても簡単に使いこなせます!

複数条件の書き方やAND・ORの使い方に戸惑う

Javaでは&&(AND)、||(OR)、!(NOT)を使って、複数の条件を1つのif文で扱うことができます。
現実の判断は「〜かつ〜」や「〜または〜」といった形で複数の条件が合わさっています。それをプログラムでも同じように書けるのが論理演算子です。

・AND(かつ)&&

int age = 20;
boolean isStudent = true;
if (age >= 18 && isStudent) {
    System.out.println("大学生以上です");
}

この場合、年齢が18以上かつ学生であれば、条件がtrueになります。

・OR(または)||

boolean hasLicense = false;
boolean isAdult = true;
if (hasLicense || isAdult) {
    System.out.println("バイクに乗れます");
}

どちらか一方がtrueであれば、条件はtrueになります。

・NOT(〜ではない)!

boolean isAdmin = false;
if (!isAdmin) {
    System.out.println("権限がありません");
}

!はtrueとfalseを逆にします。
【ポイント】

  • &&両方ともtrueでないとダメ。
  • ||どちらかがtrueならOK。
  • 複雑な条件はカッコ () を使って分かりやすく整理すると安全です。

論理演算子を使えば、より現実に近い柔軟な条件判定ができるようになります!

else if や else を使った分岐の考え方が理解できない

else ifelseは、1つのifだけでは足りないときに「複数の選択肢」を表すために使います。
現実の判断には「AでもなければB、それでもなければC」というように、条件を順番に分けたいことがあります。ifだけで書くとコードが長くなったり無駄な比較が増えたりするため、else ifelseを使うとスッキリします。
たとえばテストの点数によってメッセージを出し分けたいとき:

int score = 72;
if (score >= 90) {
    System.out.println("とてもよくできました");
} else if (score >= 70) {
    System.out.println("よくできました");
} else if (score >= 50) {
    System.out.println("がんばりましょう");
} else {
    System.out.println("もう一度チャレンジ!");
}

このように、else ifで条件を追加し、最後のelseは「上のどれにも当てはまらないとき」の処理になります。
【ポイント】

  • else if はいくつでも追加可能
  • else は1つだけで、必ず一番最後に書く
  • 上から順番に評価され、最初にtrueになったブロックだけが実行される

【誤解されやすい点】

int score = 95;
if (score >= 70)
    System.out.println("70以上");
if (score >= 90)
    System.out.println("90以上");

このようにifを2つにすると、両方実行されるので注意!
else ifelseを使えば、よりスムーズで効率的な条件分岐が書けます!

入れ子(ネスト)になったif文が読みにくくて混乱する

if文の中にif文を書くと「入れ子(ネスト)」になり、条件が増えるほど読みにくくなります。
複雑な条件判定では、段階的に条件を分けたいことがありますが、そのまま書くとコードが深くなり、どのifがどれに対応しているのかがわからなくなります。
具体例を見てみましょう!

int age = 18;
boolean hasTicket = true;

if (age >= 18) {
    if (hasTicket) {
        System.out.println("入場できます");
    } else {
        System.out.println("チケットが必要です");
    }
} else {
    System.out.println("18歳未満は入場できません");
}

これは、年齢とチケットの両方を判定している例です。
【問題点と改善】

  • ネストが深くなると読みにくい
  • 処理が増えるとインデントのミスもしやすい

そこで、&&などの論理演算子を使ってネストを浅くできます:

if (age >= 18 && hasTicket) {
    System.out.println("入場できます");
} else if (age >= 18) {
    System.out.println("チケットが必要です");
} else {
    System.out.println("18歳未満は入場できません");
}

【補足】

  • return を早めに使えば、分岐の途中で終了できて読みやすさが向上します。
  • ネストが3段以上になる場合は、別メソッドに分けるのも有効です。

ネストを減らすことで、読みやすく・ミスの少ないコードが書けるようになります!

if文とswitch文の使い分けがわからない

ifswitchはどちらも条件分岐に使えますが、用途や書き方に違いがあり、適材適所で使い分けることが大切です。
複数の値(例えば「月」や「曜日」)に応じて異なる処理をしたいときは、switchを使った方がコードがスッキリします。一方で、比較や範囲判定などが必要なときはifが向いています。
具体例を見てみましょう!

int day = 3;
switch (day) {
    case 1:
        System.out.println("月曜日");
        break;
    case 2:
        System.out.println("火曜日");
        break;
    case 3:
        System.out.println("水曜日");
        break;
    default:
        System.out.println("その他の曜日");
}

これをifで書くと:

if (day == 1) {
    System.out.println("月曜日");
} else if (day == 2) {
    System.out.println("火曜日");
} else if (day == 3) {
    System.out.println("水曜日");
} else {
    System.out.println("その他の曜日");
}

【比較ポイント】

  • switchの方が見やすくなるケース:値が「同じかどうか」で分けるとき(例:1〜7の曜日)
  • ifの方が適しているケース:範囲や複雑な条件があるとき(例:score >= 80 など)
  • Java 14以降ではswitchがより強力に(式として使えるなど)

「どちらも使えるけど、状況に応じて選ぶ」ことができれば、より読みやすくて保守しやすいコードになります!

まとめ 〜Javaのif文は“流れ”で理解しよう〜

Javaのif文は「条件によってプログラムの流れを変える」ための超重要なツールです。
条件によって「何をするか」を選べるようになると、プログラムに“意思”や“選択”を持たせられるようになります。初心者にとっては最初のつまずきやすいポイントですが、1つ1つの構造を理解すれば、確実に使いこなせるようになります。
この記事で学んだこと:

  • if文の基本構文と書き方
  • &&, ||, ! を使った複数条件の扱い方
  • else ifelse を使った分岐の順序と使い分け
  • ネスト(入れ子)による混乱を防ぐテクニック
  • ifswitchの違いと使い分けの判断基準

if文を理解することは、プログラミングを「自分の言葉で指示する力」を身につけることに他なりません。この記事で得た知識を、明日からのコードにどんどん活かしていきましょう!

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