読み込み中...

Javaでマスターする12の条件分岐テクニック

初心者向けJava条件分岐テクニック12選 Java
この記事は約24分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

Javaプログラミングにおいて、条件分岐はコードが様々なシナリオや状況に適切に反応できるようにする基本的な技法です。

今回の記事では、Javaで利用される12の条件分岐テクニックを初心者でも容易に理解できるよう、基本から応用までわかりやすくガイドします。

具体的なサンプルコード付きで、プログラミングスキルの向上を助けます。

特に、if文やswitch文、論理演算子を用いたテクニックなどを詳細に解説していきます。

このガイドを通じて、初心者向けのJava条件分岐テクニックを効果的に学ぶことができます。

●Javaとは

Javaは、1995年にサン・マイクロシステムズ(現在はオラクル社が所有)によって公開されたプログラミング言語です。

オブジェクト指向プログラミングを採用しており、その安定性とポータビリティから、多くの企業や開発者に愛用されています。

また、Javaはプラットフォームに依存しない特性を持ち、異なる環境でも動作可能なのが大きな特徴として挙げられます。

○Javaの基本的な特徴

□プラットフォーム独立

Javaアプリケーションは異なるオペレーティングシステムで一貫して動作します。

これは、「Write Once, Run Anywhere」(一度書いて、どこでも実行)というフレーズで広く知られています。

□オブジェクト指向

Javaはオブジェクト指向プログラミング言語であり、データとプロセスを一つの単位(オブジェクト)として扱います。

これにより、コードの再利用性とメンテナンスが向上します。

□安全性

Javaはメモリ管理や例外処理のメカニズムを含み、セキュリティ上のリスクを低減します。

□伸縮性と性能

Javaは多くの企業システムや大規模なアプリケーションで利用されることが多く、そのパフォーマンスとスケーラビリティが高く評価されています。

○条件分岐とは

条件分岐は、プログラムが特定の条件を満たした場合に特定のアクションを実行し、そうでない場合には別のアクションを実行するプログラム構造です。

Java言語では主にif文やswitch文を使用して条件分岐を実装します。

この技法は、プログラムがさまざまな入力や状況に対して適切に反応できるようにするために不可欠です。

●Javaの条件分岐の基本

Javaプログラミングにおいて、条件分岐はプログラムの流れを制御する基本的なテクニックの一つです。

これは、特定の条件が満たされた場合に特定のコードブロックを実行する、という動作を行います。

ここでは、Javaでの条件分岐の基本について詳しく説明します。

○if文の基本

if文はJavaの条件分岐における最も基本的な構文です。

if文を使用すると、指定された条件がtrueである場合にのみ、特定のコードブロックを実行できます。

□サンプルコード1:簡単なif文の使い方

public class Main {
    public static void main(String[] args) {
        int number = 5;

        // このコードでは、number変数が5より大きいかどうかを検査しています。
        if (number > 5) {
            System.out.println("数値は5より大きいです");
        }
    }
}

このコードを分析すると、ここではnumberという名前の整数変数を定義し、それに5という値を割り当てています。

次に、if文を使用してnumberが5より大きいかどうかを調べます。

この場合、条件はfalseですので、コードブロック内の文は実行されません。

このコードを実行すると、特に何も表示されません。

なぜなら、条件が満たされなかったため、System.out.printlnメソッドが実行されないからです。

続いて、if-else文の使用方法を見ていきましょう。

□サンプルコード2:if-else文の使い方

public class Main {
    public static void main(String[] args) {
        int number = 5;

        // このコードでは、number変数が5より大きいかどうかを検査しています。そして、それに応じて異なるメッセージを出力します。
        if (number > 5) {
            System.out.println("数値は5より大きいです");
        } else {
            System.out.println("数値は5以下です");
        }
    }
}

このコードを解析すると、ここでも同様にnumber変数が5より大きいかどうかを調査します。

しかし、この時間は、条件がfalseの場合に実行されるelseブロックが追加されています。

したがって、このコードを実行すると、「数値は5以下です」というメッセージがコンソールに表示されます。

これは、number変数が5であるため、if文の条件がfalseであると判断され、elseブロックが実行されるからです。

○switch文の基本

Javaのプログラミングにおける条件分岐技術の中でも、特に多岐にわたる場合の処理を行うための構文が「switch文」です。

switch文は、特定の変数や式の値に応じて、複数の処理から一つを選んで実行します。

□サンプルコード3:switch文の基本的な使い方

次に、実際の基本的なコード例を見てみましょう。

下記のコードは、整数型の変数dayOfWeekの値に応じて、曜日の名前を表示するプログラムです。

int dayOfWeek = 3;

switch (dayOfWeek) {
    case 1:
        System.out.println("月曜日");// 1に一致した場合の処理
        break;
    case 2:
        System.out.println("火曜日");// 2に一致した場合の処理
        break;
    case 3:
        System.out.println("水曜日");
        break;
    case 4:
        System.out.println("木曜日");
        break;
    case 5:
        System.out.println("金曜日");
        break;
    case 6:
        System.out.println("土曜日");
        break;
    case 7:
        System.out.println("日曜日");
        break;
    default:
        System.out.println("無効な数値");// どのcaseにも一致しなかった場合の処理
}

このコードを実行すると、変数dayOfWeekが3であるため、”水曜日”と表示されます。

このようにswitch文を使用すると、複数の条件に対する処理を効率的に記述することができます。

□サンプルコード4:switch文の拡張(Java 12以降)

Java 12以降のバージョンでは、switch文がさらに強化され、新しい構文が導入されました。

下記のコードは、Java 12以降のswitch文を利用したサンプルです。

int month = 4;

switch (month) {
    case 1, 2, 3 -> System.out.println("春");
    case 4, 5, 6 -> System.out.println("夏");
    case 7, 8, 9 -> System.out.println("秋");
    case 10, 11, 12 -> System.out.println("冬");
    default -> System.out.println("無効な月");
}

このコードでは、”->”記号を使用してcaseの各ブロックを記述しています。

また、一つのcaseラベルに複数の値を列挙することができます。

このコードを実行すると、変数monthが4であるため、”夏”と表示されます。

●Javaの条件分岐の応用

Javaプログラミングでよく使われる技術の一つが、条件分岐です。

初心者でも簡単に理解できるように、ここではJavaの条件分岐の応用に関する情報をわかりやすく解説します。

論理演算子を利用した条件分岐のテクニックをいくつか紹介し、具体的なサンプルコードとその実行結果を交えて解説します。

これにより、プログラミングスキルを次のレベルへと導きます。

○論理演算子を使った条件分岐

論理演算子を使用すると、複数の条件を組み合わせて複雑な条件分岐を作成することができます。

それでは、&&(AND演算子)と||(OR演算子)を使用した条件分岐のサンプルコードを紹介します。

□サンプルコード5:論理演算子&&を使用した条件分岐

下記のサンプルコードは、年齢が20歳以上かつ学生である場合に、特定のメッセージを表示するJavaプログラムです。

public class Main {
    public static void main(String[] args) {
        int age = 22; // 年齢を設定
        boolean isStudent = true; // 学生かどうかを設定

        if (age >= 20 && isStudent) {
            System.out.println("あなたは20歳以上の学生です。");
        } else {
            System.out.println("条件に該当しません。");
        }
    }
}

このコードを実行すると、”あなたは20歳以上の学生です。”というメッセージが表示されます。

ここで、&&演算子は、左右の条件がともに真である場合にtrueを返します。

年齢が20歳未満または学生でない場合は、”条件に該当しません。”と表示されます。

□サンプルコード6:論理演算子||を使用した条件分岐

下記のサンプルコードは、年齢が20歳以上または学生である場合に、特定のメッセージを表示するJavaプログラムです。

public class Main {
    public static void main(String[] args) {
        int age = 18; // 年齢を設定
        boolean isStudent = true; // 学生かどうかを設定

        if (age >= 20 || isStudent) {
            System.out.println("あなたは20歳以上または学生です。");
        } else {
            System.out.println("条件に該当しません。");
        }
    }
}

このコードを実行すると、”あなたは20歳以上または学生です。”というメッセージが表示されます。

この場合、||演算子は、左右のいずれかの条件が真である場合にtrueを返します。

年齢が20歳未満で学生でない場合は、”条件に該当しません。”と表示されます。

○三項演算子を使った条件分岐

Javaプログラミングにおいて条件分岐は非常に重要なテーマとなります。

ここでは、三項演算子を利用した条件分岐の方法を詳細に解説します。

三項演算子は、”条件式 ? 式1 : 式2″の形式で用いられ、条件式が真であれば式1が、偽であれば式2が評価されるという流れになります。

この方式は非常に簡潔に条件分岐を行うことが可能であり、コードの読みやすさを保ちつつ、コンパクトに情報を表現することができます。

次に具体的なサンプルコードとその解説を行い、その後に実行結果の説明を交えてご説明いたします。

□サンプルコード7:三項演算子を使用した条件分岐

public class TernaryOperatorExample {
    public static void main(String[] args) {
        int age = 20;
        String result = (age >= 20) ? "成人" : "未成年";

        // このコードでは、年齢が20歳以上かどうかを判定し、それに応じて「成人」または「未成年」という文字列をresult変数に代入しています。
        System.out.println("結果: " + result);
    }
}

このサンプルコードでは、ageという変数に20を代入しています。

次に三項演算子を使用し、ageが20以上であれば”成人”という文字列を、それ未満であれば”未成年”という文字列をresultという変数に代入しています。

そして、結果をコンソールに出力しています。

実行後、コンソールには”結果: 成人”という文字列が出力されます。

これは、age変数が20という値であり、20歳以上であるという条件が真であったためです。

○ネストされた条件分岐

ネストされた条件分岐は、一つの条件分岐の中にさらに別の条件分岐が存在する状態を指します。

このテクニックは、複雑な状況や複数の条件が関わる場合に非常に役立ちます。

しかし、ネストが深くなるとコードの可読性が低下するため、適切なコメントと合わせて利用することが重要です。

□サンプルコード8:ネストされたif文の使用

Javaでネストされたif文を使用すると、条件が真の場合にさらに別の条件を検証できます。

下記のコードは、ネストされたif文の基本的な使用法を表しています。

public class NestedIfExample {
    public static void main(String[] args) {
        int age = 25;
        boolean hasDriverLicense = true;

        if (age >= 18) {
            // 18歳以上の場合、運転免許を持っているかどうかを確認します
            if (hasDriverLicense) {
                System.out.println("運転可能です");
            } else {
                System.out.println("運転免許を取得してください");
            }
        } else {
            System.out.println("年齢が未成年のため、運転できません");
        }
    }
}

このコードでは、まず年齢が18歳以上かどうかを確認しています。

年齢が18歳以上の場合、次に運転免許を持っているかどうかを確認します。その結果に基づいて、適切なメッセージが出力されます。

このコードを実行すると、”運転可能です”というメッセージが表示されるのが確認できます。

□サンプルコード9:ネストされたswitch文の使用

ネストされたswitch文を利用することで、特定の条件内でさらに別の条件を検証することができます。

下記のサンプルコードは、ネストされたswitch文の基本的な使い方を表します。

public class NestedSwitchExample {
    public static void main(String[] args) {
        int level = 2;
        String department = "Marketing";

        switch (level) {
            case 1:
                System.out.println("エントリーレベルの従業員です");
                break;
            case 2:
                System.out.println("中間レベルの従業員です");
                switch (department) {
                    case "IT":
                        System.out.println("IT部門に勤めています");
                        break;
                    case "Marketing":
                        System.out.println("マーケティング部門に勤めています");
                        break;
                    default:
                        System.out.println("未知の部門です");
                        break;
                }
                break;
            default:
                System.out.println("不明なレベルの従業員です");
                break;
        }
    }
}

このコードは従業員のレベルと部門に基づいて異なるメッセージを出力します。

レベルが2の場合、さらに部門を確認し、その部門に応じたメッセージを出力します。

このコードを実行すると、「中間レベルの従業員です」および「マーケティング部門に勤めています」というメッセージが表示されます。

これにより、条件が複数あり、それぞれの条件が異なる結果を持つような場合に、ネストされたswitch文を利用してコードを整理し、可読性を高めることができます。

●Javaの条件分岐のテクニックとベストプラクティス

条件分岐は、プログラミングにおいて基本的かつ重要な概念であり、Javaでも多くの場面で利用されます。

ここではJavaの条件分岐のテクニックとベストプラクティスに焦点を当て、コードの可読性を高めるテクニックを紹介します。

○コードの可読性を高めるテクニック

コードの可読性を高めることは、プログラムのメンテナンス性を向上させ、バグの発生を減らします。

Javaにおける条件分岐のコードを読みやすく保つための主要なテクニックには、適切なグルーピングとコメントの利用が含まれます。

□サンプルコード10:グルーピングとコメントを利用した条件分岐

下記のサンプルコードは、条件分岐の中でグルーピングとコメントを利用して、コードの可読性を向上させる方法を表しています。

public class ConditionExample {
    public static void main(String[] args) {
        int age = 25;

        // 年齢に基づく条件分岐をグルーピングとコメントで明示
        if (age < 13) {
            System.out.println("子供です");
        } else if (age >= 13 && age < 20) {
            System.out.println("10代です");
        } else if (age >= 20 && age < 65) {
            System.out.println("成人です");
        } else {
            System.out.println("高齢者です");
        }
    }
}

このコードでは、age変数の値に基づく条件分岐を行っています。

条件分岐は、四つの異なる年齢層(子供、10代、成人、高齢者)に分かれており、それぞれの条件は独立したグループとして整理されています。

また、コメントを利用して各グループの目的を明示しています。

このコードを実行すると、年齢が25歳であるため、「成人です」という文字列がコンソールに表示される結果となります。

○効率的なコードの書き方

Javaのプログラミングにおいて、効率的なコードの書き方は非常に重要です。

コードが効率的であると、プログラムのパフォーマンスが向上し、保守も容易になります。

ここでは、効率的なコードを書く際のテクニックやコツについて詳しく説明します。

まず最初に、コードの効率を向上させる基本的な原則をいくつか挙げます。

それは、不必要な計算を避ける、変数の再利用、適切なデータ構造の利用などがあります。

また、アルゴリズムの選択もコードの効率を大きく左右します。

続いて、具体的なサンプルコードを参照しながら、効率的なコードの書き方について詳細に説明します。

□サンプルコード11:早期リターンを利用したコードの最適化

早期リターンは、条件分岐の深度を減らし、コードの読みやすさを向上させる効果的なテクニックです。

下記のサンプルコードは、早期リターンを利用して、条件分岐を効率的に行う方法を表しています。

public String checkNumber(int number) {
    // 数値が0より小さい場合、直ちに"negative"と返す
    if (number < 0) {
        return "negative";
    }

    // 数値が0の場合、直ちに"zero"と返す
    if (number == 0) {
        return "zero";
    }

    // 上記の条件に当てはまらない場合、"positive"と返す
    return "positive";
}

このコードでは、メソッドが受け取った数値を評価し、その数値が負、ゼロ、または正であるかどうかを文字列で返します。

最初のif文で数値が負であるかどうかを評価し、真であればすぐに”negative”と返します。

次に、数値がゼロであるかどうかを評価し、真であればすぐに”zero”と返します。

どちらの条件も偽である場合、”positive”を返します。

このコードを実行すると、引数として与えられた数値に応じて、”negative”、”zero”、または”positive”という文字列が返される結果となります。

これによって、コードは簡潔かつ効率的になります。

早期リターンを利用することで、不必要なelse文を避けることができ、コードの読みやすさが向上します。

○エラーハンドリングと条件分岐

Javaでプログラムを実行する際、異常な状態や未予期の状況に遭遇することがあります。

これらの状況を適切に捉えて、プログラムが予期せぬ動作をするのを防ぐためにはエラーハンドリングが非常に重要となります。

また、エラーハンドリングは条件分岐と組み合わせることで、更に強力なツールとなります。

ここでは、Javaのエラーハンドリングと条件分岐の技術を学んでいきます。

エラーハンドリングとは、プログラムが実行中に発生する可能性のあるエラーを捉え、それに対して適切な対応を行う技術です。

Javaでは、try-catch ブロックを使ってエラーハンドリングを行うことができます。

□サンプルコード12:try-catch文を利用したエラーハンドリング

下記のサンプルコードでは、try-catch文を使用してエラーハンドリングを実施しています。

このコードの詳細な説明も併せて行います。

public class ErrorHandler {
    public static void main(String[] args) {
        try {
            int result = divide(4, 0);
            System.out.println("結果: " + result);
        } catch (ArithmeticException e) {
            System.out.println("エラーが発生しました: " + e.getMessage());
        }
    }

    public static int divide(int a, int b) throws ArithmeticException {
        return a / b;
    }
}

このコードでは、divideという関数を定義し、その中でaをbで割る操作を行っています。

ただし、bが0の場合、ArithmeticExceptionというエラーが発生します。

このエラーは、try-catchブロック内で捉えられ、エラーメッセージがコンソールに表示されます。

コードを実行すると、”エラーが発生しました: / by zero”というメッセージが表示されることでしょう。

これは、例外が捉えられ、エラーメッセージが適切に表示されたことを意味します。

●注意点と対処法

Javaで条件分岐を使用する際にはいくつかの注意点が存在します。

それではそれぞれの注意点と、それに対応する方法を詳しく解説します。

○適切な条件の設定

条件分岐の基本的な実装において、適切な条件を設定することが非常に重要です。

間違った条件設定はプログラムのバグを引き起こしたり、期待される動作をしなくなる場合があります。

Javaで条件を設定する際には、条件が正確であることを確認し、不等号の向きなど小さなミスがないか確認するよう心掛けましょう。

int age = 18;

// 正しい条件設定
if (age >= 18) {
    System.out.println("成人です");
} else {
    System.out.println("未成年です");
}

このコードは「age」変数が18以上かどうかをチェックしています。

コードが正常に動作することを確認するためには、複数の異なる「age」値でテストを行い、期待される出力が得られるか確認します。

○コードの冗長性の回避

コードの冗長性は可読性を低下させ、メンテナンスが困難になる要因となります。

冗長なコードを避けるためには、重複したコードの排除や適切なメソッドの使用を心掛けることが重要です。

冗長なコードを回避するためには、条件分岐を設計する際にロジックを簡素化し、必要ないコードの削除を行いましょう。

int score = 85;

// 簡潔なコード
if (score >= 90) {
    System.out.println("優秀");
} else if (score >= 80) {
    System.out.println("良好");
} else {
    System.out.println("可");
}

このコードはスコアに基づいて評価を表示するもので、適切な構造を用いてコードの冗長性を避けています。

冗長なコードを削減することで、コードの可読性が向上し、メンテナンスも容易になります。

●カスタマイズ方法

Javaの条件分岐テクニックを更に進化させる方法として、カスタマイズテクニックがあります。

この部分では、Javaの条件分岐を柔軟かつ効率的に利用するためのテクニックを紹介します。

具体的なサンプルコードとその詳細な説明を交えながら、Javaプログラミングのスキルを次のレベルへと導きます。

○条件分岐のカスタマイズテクニック

条件分岐は、基本的なif文やswitch文を使うだけでなく、より高度なプログラムを作成するためのカスタマイズが可能です。

□条件式の最適化

Javaの条件式は、短絡評価を利用して、条件式を効率的にする方法があります。

例えば、次のようなコードがあります。

//このコードでは複数の条件を確認しています。
if (a > 0 && b > 0 && c > 0) {
    System.out.println("全ての変数は正です");
}

このコードを実行すると、a、b、c全ての変数が正の場合に限り、メッセージが出力されます。

条件式の短絡評価により、一つの条件が偽であれば、後続の条件は評価されなくなります。

これによって、プログラムの効率が向上します。

□メソッドの利用

条件分岐の複雑さを解消するために、条件を確認するメソッドを作成するというテクニックもあります。

次のサンプルコードをご覧ください。

//このコードではメソッドを使用して条件分岐を行います。
public static boolean isValid(int number) {
    return number > 0;
}

public static void main(String[] args) {
    int a = 5;
    if (isValid(a)) {
        System.out.println("変数は正です");
    }
}

このコードを実行すると、isValidメソッドがtrueを返す場合、”変数は正です”というメッセージが出力されます。

メソッドを利用することで、コードの可読性が向上し、複雑な条件分岐を簡潔に書くことができます。

□三項演算子の応用

三項演算子は、簡単な条件分岐を行う際に非常に便利です。

下記のサンプルコードをご覧ください。

//このコードでは三項演算子を使用しています。
int max = (a > b) ? a : b;
System.out.println("最大値は: " + max);

このコードを実行すると、aとbのうち大きい方の値を変数maxに代入し、その値を出力します。

三項演算子を使うと、if-else文を使うよりもコードが短縮され、読みやすくなります。

まとめ

Javaプログラミングの道を歩む初心者の方々へ向けて、この記事ではJavaの条件分岐の基本から応用までを深く探求しました。

初心者向けJava条件分岐テクニック12選として、実用的なテクニックとベストプラクティスを取り上げました。

この記事を通じて、読者の皆さんがJavaプログラミングのスキルアップに役立つ知識を得ることができたことを願っています。

さらなる学習と練習を通じて、皆さんがJavaの世界でさらなる成功を収めることを心より願っています。