Javaの基礎知識(基礎編)

【Javaの基礎知識】条件分岐(if・switch)を徹底解説!

Javaのプログラムでは、実行の流れを制御するために制御構文が用いられます。制御構文には、大きく分けて「条件分岐」「繰り返し」「処理制御」の3つの種類があります。

本記事では、その中でも「条件分岐」に焦点を当て、 ifswitchの基本構造や使い方について詳しく解説します。

繰り返し処理(for文・while文)については、別の記事で解説しますので、ぜひそちらも参考にしてください。

Javaの制御構文とは?

Javaの制御構文は、プログラムの実行順序を制御し、条件分岐や繰り返し処理を実現するための重要な要素です。これにより、特定の条件に応じた処理の分岐が可能になります。本記事では、Javaの制御構文の基本的な役割と種類をわかりやすく解説します。

条件分岐の基本的な役割

プログラムは基本的に上から下へ順番に実行されます。しかし、実際の開発では、状況に応じて処理の流れを変える必要があります。例えば、特定の条件を満たした場合にのみ処理を実行したり、同じ処理を繰り返したりすることが求められます。

Javaの制御構文は、このようなプログラムの流れを制御するための構文であり、次のような役割を持ちます。

  • 条件分岐: 指定した条件が成立するかどうかを判定し、異なる処理を実行する(例: if, switch
  • 繰り返し処理: 指定した条件が成立している間、または指定回数だけ処理を繰り返す(例: for, while, do-while
  • 処理の制御: ループの途中で処理を中断したり、スキップしたりする(例: break, continue, return

制御構文を適切に活用することで、効率的かつ柔軟なプログラムを構築することが可能になります。たとえば、ユーザーの入力値に応じて処理を変える場合や、大量のデータを繰り返し処理する場合に役立ちます。

次のセクションでは、Javaの主要な制御構文の種類について詳しく解説していきます。

制御構文の種類

Javaの制御構文は、大きく以下の3種類に分けられます。

カテゴリ構文用途
条件分岐if, switch条件に応じて処理を分岐
ループfor, while, do-while繰り返し処理を実行
制御文break, continue, return処理の流れを制御

条件分岐(if文・switch文)

プログラムを実行する際、特定の条件に応じて処理を分岐させる必要があります。Javaでは、if文switch文を使用して条件分岐を実現できます。

  • if文: 条件を指定して処理を分岐する基本的な制御構文で、複数の条件を設定することも可能です。
  • switch文: 特定の値に応じて複数の処理を分岐させる場合に使用され、可読性を向上させることができます。

適切に条件分岐を使い分けることで、無駄のない効率的なコードを記述できるようになります。本記事では、それぞれの基本的な使い方と応用例を詳しく解説していきます。

if文の基本構文

if文を使用すると、条件に応じて処理を分岐できます。

if (条件) {
    // 条件がtrueのときの処理
} else {
    // 条件がfalseのときの処理
}

ココがポイント

  • ifの直後に書く条件は、必ず半角丸カッコ()で囲む
  • 処理内容は何行でも書けるが、1行に1つの処理を書き、行末に半角セミコロン(;)を置く
  • 処理内容を書く場合は、必ず「インデント」する

特に、Javaのプログラムでは「インデント」(字下げ)がとても大切です。インデントとは、処理のまとまりを見やすく&わかりやすくするために、波括弧で囲まれた範囲の行頭に、半角スペースやタブ文字を入れて字下げをすることです。

インデントがおかしいと、プログラムがとても読みにくくなります。また、場合によっては他者から非難されることもある、大切なポイントです。必ず「ifの波括弧で囲まれた範囲はインデントする」ことを習慣づけましょう。

if文の使用例

テストの結果を集計し、平均点未満を赤点とする場合を考えましょう。このとき、「学生が平均点未満か否か」判断が必要です。これを「条件」といい、条件に合わせて処理を変えることを「条件分岐」といいます。

ここでは「if」分を使って赤点か否かを判定するプログラムを書いてみます。

[Main.java]

public class Main {
    public static void main(String[] args) {
        // 3人分の特典を定義
        var a = 30;
        var b = 50;
        var c = 70;
        // 平均点を計算
        var average = (a + b + c) / 3.0f;
        // 平均点を印字
        System.out.println("平均点" + average);
        // aさんが平均点以下なら「赤点」と出す。
        if (a < average) {
            System.out.println("赤点");
        }
    }
}

変数「var」について
Java 10では、ローカル変数時のvarを用いた型推論が使用可能になりました。簡単に言えば、変数利用時に型を意識せずに「var」を使って型宣言ができる機能です。
java 10以前の方は「int」「float」等の型を明確に指定する必要があります。

コンソール

平均点50.0
赤点

java10以降、明示的に型を宣言する必要がなくなったことは大変便利なのですが、商用プロジェクトにおいては、既存のjavaプログラムは、ほぼ100%と言ってもいいほどjava10以前に書かれていることが殆どです。思わぬトラブルを起こさないためにも、きちんと型の理解はしておきましょう。

if文の応用(else-ifを使用)

プログラムによっては、1つの条件に当てはまる場合と、それ以外の場合で処理を分けたいことがあるでしょう。
上記フローの「if-else」分は条件に当てはまる場合(Yes)アクション2を実行してからアクション3を実行します。当てはまらない場合(No)はアクション3を実行します。

if (条件) {
    // Yes の場合(条件が true)
    action2();
} else {
    // No の場合(条件が false)
    action3();
}

ここでは「if-else」分を使って簡単なサイコロゲームを例にプログラムを作成してみます。

サイコロの出目が1なら大当たり!

サイコロの出目が1と異なる場合はハズレ。

[Main.java]

package org.pmisfbac.java.sample.ifandswitch;
import java.util.Random;

public class Main {
    public static void main(String[] args) {
        // 乱数ジェネレーターを生成
        Random rand = new Random();
        // サイコロを振る
        int dice = rand.nextInt(6) + 1;
        // サイコロの出目を出力する
        System.out.println("出目" + dice);

        // 出目が1なら大当たりと出力する
        if(dice == 1) {
            System.out.println("大当たり!");
        } else {
            // それ以外ははずれ
            System.out.println("ハズレ…。");
        }
    }
}

switch文の基本構文

Javaの switch文は、特定の変数の値に応じて異なる処理を実行するための制御構文です。通常、 case文と一緒に使用され、各 caseで特定の値に対する処理を記述します。

switch文を使うことで、複数の条件分岐を if-else文よりも簡潔に記述でき、可読性が向上します。また、 defaultを指定することで、どの caseにも該当しない場合の処理を定義できます。

例えば、以下のような構文で使用されます。

switch(変数) {
    case 値1:
        // 値1の場合の処理
        break;
    case 値2:
        // 値2の場合の処理
        break;
    default:
        // どの値にも該当しない場合の処理
}

Switch/Case文の条件

  • 条件分岐には3つの方法
  • 1つの要素が別の要素に対応できる場合

このように、 switch文は case文と組み合わせて使用され、条件に応じた処理を簡潔に記述するのに適しています。

例えば、先ほどと同様に「if-else」を使用してその出目を元に占いをするプログラムを例に考えましょう。今度は下記のように出目の範囲を広げてみますね。

出目の範囲

出目が1:大吉
出目が2:中吉
出目が3:吉
出目が4:末吉
出目が5:凶
出目が6:大凶

「if-else」分を使って出目に合わせて占い結果を出すプログラム例

次は「if-else」文の代わりに「switch」分を用いて同様のプログラムを作成してみます。

「if~else if~else」と「switch/case」とを書き比べ場合、switchの方が読みやすいです。

プログラムは、複雑なコードを書くことが優れているわけではありません。むしろ、誰が見ても処理内容が分かりやすい可読性の高いコードを書くことが重要であり、そうしたプログラマーが重宝されます。

switch文は、特定の値に応じて処理を分岐させる場合に使用します。

package org.pmisfbac.java.sample.ifandswitch;

import java.util.Random;

public class Main {

    public static void main(String[] args) {
        // 乱数ジェネレーターを生成
        Random rand = new Random();
        // サイコロを振る
        int dice = rand.nextInt(6) + 1;
        // サイコロの出目を出力する
        System.out.println("出目" + dice);

        // サイコロの出目に応じて占い結果を出す
        switch(dice) {
            case 1:
                System.out.println("大吉");
                break;
            case 2:
                System.out.println("中吉");
                break;
            case 3:
                System.out.println("吉");
                break;
            case 4:
                System.out.println("末吉");
                break;
            case 5:
                System.out.println("凶");
                break;
            default:
                System.out.println("大凶");
                break;
        }
    }
}

これは見たら分かる通り、サイコロの出目一つ一つの要素が、占いの一つ一つの結果に対応できます。このような条件分岐で使用するのが、switchです。

ココがポイント

  • switchの方が記述がシンプルになりやすい
  • switchの方が可読性(読みやすさ)が高くなりやすい
  • switchなら前後の条件に影響されないため、分かりやすい

まとめ

本記事では、Javaの条件分岐に焦点を当て、 ifswitchの基本構造や使い方について解説しました。

  • if文: 条件がtrueかfalseかを判定し、処理を分岐する基本的な制御構文。
  • switch文: 変数の値ごとに処理を分岐でき、 caseを使うことで複数の条件をシンプルに記述可能。

条件分岐を適切に活用することで、コードの可読性を向上させ、無駄のないロジックを組むことができます。

また、繰り返し処理(for文・while文)については別の記事で詳しく解説するので、ぜひそちらも参考にしてください。

よく読まれている記事

1

IT入門シリーズ 🟢 STEP 1: ITの基礎を知る(ITとは何か?) 📌 IT初心者が最初に学ぶべき基本知識。ITの概念、ネットワーク、OS、クラウドの仕組みを学ぶ ...

2

「私たちが日々利用しているスマートフォンやインターネット、そしてスーパーコンピュータやクラウドサービス――これらの多くがLinuxの力で動いていることをご存じですか?無料で使えるだけでなく、高い柔軟性 ...

3

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

-Javaの基礎知識(基礎編)