6日でできる 新Java入門|制御文④ ifによる分岐

条件を見て動けるようになると、Javaは一気に実戦向きになる。ifによる分岐を覚えて、状況に応じた処理を使い分けよう

Javaのプログラムは、ただ上から順番に文を実行するだけでは、本当に使いやすいものにはなりません。状況によって、ある処理を実行したり、別の処理に切り替えたりできるようになってこそ、プログラムらしい柔軟さが生まれます。そこで重要になるのが if文 による分岐です。

ドラゴンボールの世界でたとえるなら、修行や戦いでは、いつでも同じ動きをするわけではありません。気が十分に高まっていれば必殺技を放つ、まだ足りなければ基本の型を続ける、相手の動きに合わせて防御に切り替える、といった判断が必要です。Javaの if文 もまさにそれと同じで、条件を見て次の行動を決めるための構文です。

この記事では、if文の基本、if-else文による二択の分岐、配列や for文 と組み合わせた点数集計、if文の入れ子、そして論理演算子を使った複数条件の判定まで、順番に丁寧に見ていきます。例示するプログラムは Lesson11_1.java から Lesson11_5.java までを使い、修行判定や技の成功チェックのような流れに置き換えながら整理していきます。ここを理解すると、Javaプログラムが 条件を見て適切に動く 感覚がかなりつかみやすくなります。

if文とは何か

if文は、ある条件が true のときだけ、特定の処理を実行するための構文です。条件が false なら、その処理は実行されません。とてもシンプルですが、Javaで分岐を作る基本になる大切な構文です。

ドラゴンボール風に言えば、これは 修行開始の判定門 のようなものです。条件を満たした者だけが先へ進み、満たしていなければその処理は行われません。

if文が必要になる場面

場面分岐させたい内容
合格判定点数が基準以上なら合格
成功判定技が成功したときだけ表示する
範囲チェック条件を満たす値だけ処理する
複数条件両方そろったときだけ特別処理を行う

このように、if文は プログラムに判断力を与える基本の型 だと考えると分かりやすいです。

if文の基本構文

if文の基本形はとてもシンプルです。

基本の形

if (条件式) {
    // 条件が真なら実行される処理
}

条件式が true ならブロックの中が実行され、false なら何もせずに次へ進みます。

構造の見方

部分役割
if条件分岐を始めるキーワード
条件式true か false になる式
ブロック条件が true のときだけ実行される処理

ここで大事なのは、if文は 必ず boolean として評価できる条件式 を必要とすることです。つまり、最終的に true か false になる式でなければなりません。

if文による基本的な分岐

まずは、条件が true のときだけ処理を行うシンプルな例を見てみます。

ファイル名:Lesson11_1.java

public class Lesson11_1 {
    public static void main(String[] args) {
        int powerLevel = 78;

        if (powerLevel >= 60) {
            System.out.println("修行段階を突破しました");
        }
    }
}

実行結果

修行段階を突破しました

このプログラムでは、powerLevel が 60 以上ならメッセージを表示します。条件に合っているので、実行結果が出ています。もし 60 未満なら、何も表示されません。

この例から分かるのは、if文は 条件に合うときだけ特定の処理を通す門 のような役割を持っているということです。

if-else文の使い方

if文だけだと、条件が false のときに何もしません。けれど、条件が false の場合にも別の処理をしたいことがあります。そういうときに使うのが else です。

if-else文の基本形

if (条件式) {
    // 条件が真なら実行
} else {
    // 条件が偽なら実行
}

これで true のときと false のときの両方の処理を書けます。

if-else文による二択の分岐

次は、突破か再修行かを表示する例です。

ファイル名:Lesson11_2.java

public class Lesson11_2 {
    public static void main(String[] args) {
        int powerLevel = 45;

        if (powerLevel >= 60) {
            System.out.println("修行突破です");
        } else {
            System.out.println("もう一度基礎修行を行います");
        }
    }
}

実行結果

もう一度基礎修行を行います

このプログラムでは、powerLevel が 60 未満なので if の中には入らず、else の中の処理が実行されます。

if と if-else の違い

書き方動き
if だけ条件が true のときだけ実行
if-elsetrue のときと false のときで処理を分ける

ドラゴンボール風に言えば、if だけなら 合格者だけを通す門、if-else なら 合格なら右、不合格なら左へ進ませる分岐路 のようなイメージです。

配列の要素を比較して点数を集計する

if文は、配列や for文 と組み合わせることでかなり実用的になります。修行動作の一致を数える処理で説明します。

ファイル名:Lesson11_3.java

public class Lesson11_3 {
    public static void main(String[] args) {
        int[] masterMoves = {3, 2, 1, 4, 2, 3, 1};
        int[] traineeMoves = {3, 2, 2, 4, 2, 1, 1};
        int score = 0;

        for (int i = 0; i < masterMoves.length; i++) {
            if (masterMoves[i] == traineeMoves[i]) {
                score++;
            }
        }

        System.out.println("正しくできた動作数は " + score + " 個です。");
    }
}

実行結果

正しくできた動作数は 5 個です。

このプログラムでは、師匠の見本動作と修行者の実際の動作を、配列の同じ位置ごとに比較しています。一致していたら score を 1 増やします。

この処理の流れ

処理内容
for文配列を先頭から順番に見る
if文同じ位置の値が一致するか確認する
score++一致した回数を数える

この例から分かるのは、if文は 単独で使うだけでなく、繰り返し処理の中で条件チェックを行う道具としても非常に重要だということです。

if文の入れ子

if文の中にさらに if文 を書くことを、入れ子 または ネスト と呼びます。これは、条件1を満たしたうえで、さらに条件2も満たしたときだけ処理を行いたい場合に使います。

ドラゴンボール風にたとえるなら、最初の門を通った者だけが次の門へ進み、そこでさらに条件を満たした者だけが特別修行を受けられる、という流れです。

if文の入れ子の例

ここでは、2つの修行課題がどちらも成功したときだけボーナスが入る例に置き換えます。

ファイル名:Lesson11_4.java

public class Lesson11_4 {
    public static void main(String[] args) {
        int move1 = 5, move2 = 8;
        int target1 = 5, target2 = 8;
        int bonusPoint = 0;

        if (move1 == target1) {
            if (move2 == target2) {
                bonusPoint = 10;
            }
        }

        System.out.println("獲得ボーナス:" + bonusPoint);
    }
}

実行結果

獲得ボーナス:10

このプログラムでは、最初に move1 が target1 と一致するかを見ています。その条件を満たした場合だけ、次に move2 と target2 の比較へ進みます。そして両方成功していたら bonusPoint に 10 を入れています。

if文の入れ子が向いている場面

場面使い方
段階的な条件確認まず1つ目を確認し、その後で次を確認する
条件が順番に意味を持つとき最初の条件を通過した場合だけ次を見る
読み手に流れを見せたいとき門を順番に通るような構造を表せる

if文の構造の整理

if文にはいくつか代表的な形があります。ここでいったん整理しておくと見やすくなります。

if文の構造まとめ

構文用途・意味
if (条件) { ... }条件が真のときだけ処理を実行
if (条件) { ... } else { ... }真のときと偽のときで処理を分ける
if (条件1) { if (条件2) { ... } }条件1かつ条件2が順番に満たされたときだけ実行
if (a == 1 && b == 2) { ... }複数条件を同時に満たす場合だけ実行

このように、同じ if でも、書き方によって分岐の表現が変わります。

複数条件を1つのifでまとめる

入れ子の if文 でも複数条件を表現できますが、論理演算子を使うと、1つの if文 にまとめて書くこともできます。特に && は 両方とも真のときだけ真 になるので、複数条件の同時成立を表すのによく使います。

論理演算子を使った分岐の例

ここでは、2つの動作が両方正解なら成功メッセージを出す例に置き換えます。

ファイル名:Lesson11_5.java

public class Lesson11_5 {
    public static void main(String[] args) {
        int move1 = 2, move2 = 7;
        int target1 = 2, target2 = 7;

        if (move1 == target1 && move2 == target2) {
            System.out.println("連続技の判定は成功です!");
        } else {
            System.out.println("どちらかの動作を見直しましょう。");
        }
    }
}

実行結果

連続技の判定は成功です!

このプログラムでは、move1 == target1 と move2 == target2 の両方が true のときだけ、if の中が実行されます。どちらか一方でも違っていれば else に進みます。

入れ子と && の違い

書き方特徴
入れ子の if条件を段階的に確認する流れが見えやすい
&& を使う if複数条件をまとめてすっきり書ける

どちらも意味としては近いですが、コードの見せ方が少し違います。条件の流れを段階的に見せたいなら入れ子、まとめてシンプルに書きたいなら && が使いやすいです。

if文とboolean型の関係

if文の条件式には、最終的に true または false になる式を書きます。つまり、if文は boolean型の値を使って動いていると考えることができます。

たとえば次のような形です。

boolean isReady = true;

if (isReady) {
    System.out.println("準備完了です");
}

このように、比較演算子を使わなくても、boolean型の変数そのものを条件として使うこともできます。

ドラゴンボール風にいえば、判定札に 準備完了 と書かれていて、その札が true なら先へ進む、という流れです。if文の裏側では、常に 真か偽か が大事になっています。

if文でよくある注意点

if文は基本構文ですが、初心者が間違えやすい点もいくつかあります。

注意したいポイント

注意点内容
= と == の混同= は代入、== は比較
条件式が boolean になっているかtrue / false になる式が必要
ブロックの範囲{} の中だけが条件付きで実行される
インデント見やすく整えて条件の範囲を分かりやすくする

特に = と == の違いはかなり重要です。見た目が似ているので、ここでつまずきやすいです。

ifによる分岐の流れを図で整理

下図は、if文が 条件判定 を行い、その結果が true なら上の処理、false なら下の処理へ進む分岐構造を示したものです。

↓クリックすると拡大表示されます。

この図から分かること

この図を見ると、if文は一本道ではなく、条件判定によって処理が分かれる構造だと分かります。true 側だけがあるのか、false 側にも処理があるのかという違いも分かります。

入れ子と論理演算子の違いを図で整理

下図は、左側に if文の入れ子、右側に && を使った1つの条件式を並べて、どちらも 両方の条件を満たしたときだけ処理を実行する ことを示したものです。順番に門を通るように確認するか、1つの判定でまとめるかの違いが分かります。

↓クリックすると拡大表示されます。

この図から分かること

この図を見ると、入れ子のif文と && を使った条件式は、書き方は違っても 両方の条件を満たしたときだけ通す という点で近い働きを持つことが分かります。場面に応じてどちらを使うと読みやすいか考えます。

ifによる分岐を理解すると、プログラムに判断の流れが生まれる

if文は、Javaで条件に応じた動きを作るための中心的な構文です。true のときだけ実行する基本形、true と false で分ける if-else、配列と組み合わせた集計、入れ子による段階的判定、&& を使った複数条件のまとめ方まで理解していくと、プログラムがかなり柔軟になります。

ドラゴンボールの修行でも、いつも同じ動きだけをするのではなく、条件に応じて進む、止まる、切り替える、強化するといった判断が必要です。Javaの if文 もそれと同じで、プログラムに 状況を見て選ぶ力 を与える、とても大切な仕組みです。