Java入門 STEP4|条件分岐を使ってみよう

karin@taishi@felmia

条件分岐とは?

プログラムでは、条件によって実行する処理を変えたいことがあります。

例えば、

「点数が80点以上なら『合格』と表示する」

「年齢が20歳以上なら『成人です』と表示する」

といった処理です。

Javaでは、このように条件によって処理を分けることを「条件分岐」と呼びます。

このSTEPでは、if文を使って条件分岐を書く方法を学んでいきます。

if文の基本

if文は、指定した条件がtrueのときだけ処理を実行します。

基本的な書き方は次のようになります。

if (条件) {
    条件がtrueのときに実行する処理
}

条件を ( ) の中に書き、条件がtrueだった場合に実行したい処理を { } の中に書きます。

例えば、「点数が80点以上なら合格と表示する」という条件は、次のように書くことができます。

if (score >= 80) {
    System.out.println("合格");
}

score >= 80は、「scoreの値が80以上か」を調べています。

条件がtrueなら{ }の中が実行され、falseなら実行されません。

実際にif文を使ってみよう

新しくIfSampleクラスを作成してください。

作成できたら、次のコードを入力して実行してみましょう。

public class IfSample {

    public static void main(String[] args) {
        int score = 85;

        if (score >= 80) {
            System.out.println("合格");
        }
    }

}

実行結果

合格

scoreには85が入っています。

score >= 80trueになるため、if文の中に書かれている「合格」が表示されます。

今度は、scoreの値を70に変更して、もう一度実行してみましょう。

score >= 80falseになるため、今度は「合格」は表示されません。

if文は条件がtrueのときだけ動く

trueの場合 → { }の中を実行する
falseの場合 → { }の中を実行しない

まずは、この動きを覚えておきましょう。

if~else文を使ってみよう

if文では、条件がtrueのときに実行する処理を書くことができました。

elseを追加すると、条件がfalseだった場合の処理も書くことができます。

基本的な書き方は次のようになります。

if (条件) {
    条件がtrueのときに実行する処理
} else {
    条件がfalseのときに実行する処理
}

例えば、点数が80点以上なら「合格」、80点未満なら「不合格」と表示する場合は、次のように書きます。

if (score >= 80) {
    System.out.println("合格");
} else {
    System.out.println("不合格");
}

実際にif~else文を使ってみよう

今回は新しくIfElseSampleクラスを作成してください。

作成できたら、次のコードを入力して実行してみましょう。

public class IfElseSample {

    public static void main(String[] args) {
        int score = 70;

        if (score >= 80) {
            System.out.println("合格");
        } else {
            System.out.println("不合格");
        }
    }

}

実行結果

不合格

今回はscore70が入っています。

score >= 80falseになるため、ifの中ではなく、elseの中に書かれた「不合格」が表示されます。

今度はscore90に変更して、もう一度実行してみましょう。

今度は条件がtrueになるため、「合格」が表示されます。

ifとelseのどちらか一方が実行される

ifの条件がtrue
ifの中を実行

ifの条件がfalse
elseの中を実行

elseには条件を書く必要はありません。

else ifを使って3つ以上に分けてみよう

if~elseでは、処理を2つに分けることができました。

条件を3つ以上に分けたい場合は、else ifを使います。

基本的な書き方は次のようになります。

if (条件1) {
    条件1がtrueのときに実行する処理
} else if (条件2) {
    条件1がfalseで、条件2がtrueのときに実行する処理
} else {
    どちらの条件にも当てはまらないときに実行する処理
}

上から順番に条件を確認して、最初にtrueになった部分の処理が実行されます。

例えば、点数によって評価を分ける場合は次のように書けます。

if (score >= 80) {
    System.out.println("A");
} else if (score >= 60) {
    System.out.println("B");
} else {
    System.out.println("C");
}

この場合は、

  • 80点以上 → A
  • 60点以上80点未満 → B
  • 60点未満 → C

となります。

実際にelse ifを使ってみよう

新しくElseIfSampleクラスを作成してください。

作成できたら、次のコードを入力して実行してみましょう。

public class ElseIfSample {

    public static void main(String[] args) {
        int score = 75;

        if (score >= 80) {
            System.out.println("A");
        } else if (score >= 60) {
            System.out.println("B");
        } else {
            System.out.println("C");
        }
    }

}

実行結果

B

今回はscore75なので、最初のscore >= 80には当てはまりません。

次のscore >= 60trueになるため、「B」が表示されます。

条件を書く順番に注意

条件を書く順番に注意しよう

例えば、次のように条件を書くと、意図した結果になりません。

score >= 60を先に確認してしまうと、80点や90点の場合もこの条件に当てはまります。

そのため、「A」を表示する処理まで進みません。

条件を段階的に分ける場合は、どの条件から確認するかも考える必要があります。

今回のような点数判定では、80点以上 → 60点以上のように、大きい値から確認すると分かりやすくなります。

ここはSTEP4の中でもかなり重要です。
次は 「条件を組み合わせてみよう」 として、STEP3で学んだ&&||if文の中で実際に使ってみましょう。

複数の条件を組み合わせてみよう

if文の条件には、&&||を使って複数の条件を組み合わせることができます。

例えば、「年齢が20歳以上、29歳以下」という条件は次のように書けます。

if (age >= 20 && age <= 29) {
    System.out.println("20代です");
}

&&は「かつ」という意味なので、

age >= 20
age <= 29

両方がtrueになった場合だけ、「20代です」と表示されます。

実際に使ってみよう

新しくMultipleConditionSampleクラスを作成してください。

作成できたら、次のコードを入力して実行してみましょう。

public class MultipleConditionSample {

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

        if (age >= 20 && age <= 29) {
            System.out.println("20代です");
        } else {
            System.out.println("20代ではありません");
        }
    }

}

実行結果

20代です

今回はage25なので、

age >= 20 → true
age <= 29 → true

となり、両方の条件を満たしています。

そのため、「20代です」と表示されます。

「または」の条件を使う場合

どちらか一方の条件を満たした場合に処理を実行したいときは、||を使います。

例えば、「年齢が20歳未満、または60歳以上」という条件は次のように書けます。

if (age < 20 || age >= 60) {
    System.out.println("条件に当てはまります");
}

||は「または」という意味なので、どちらか一方がtrueなら処理が実行されます。

&& と || を使い分けよう

&&両方の条件を満たす「かつ」

||どちらかの条件を満たす「または」

条件が長くなったときは、「かつ」なのか「または」なのか、日本語に置き換えて考えると分かりやすくなります。

switch文を使ってみよう

if文のほかにも、条件によって処理を分ける方法があります。

例えば、「1なら月曜日、2なら火曜日」のように、変数の値によって処理を分けたい場合にはswitch文を使うことができます。

基本的な書き方は次のようになります。

switch (変数) {
case 値1:
    値1だったときの処理
    break;
case 値2:
    値2だったときの処理
    break;
default:
    どの値にも当てはまらなかったときの処理
    break;
}

switch( )に調べたい変数を書き、caseに比較する値を書きます。

値が一致したcaseの処理が実行されます。

defaultは、どのcaseにも当てはまらなかった場合に実行されます。

実際にswitch文を使ってみよう

新しくSwitchSampleクラスを作成してください。

作成できたら、次のコードを入力して実行してみましょう。

public class SwitchSample {

    public static void main(String[] args) {
        int day = 2;

        switch (day) {
        case 1:
            System.out.println("月曜日");
            break;
        case 2:
            System.out.println("火曜日");
            break;
        case 3:
            System.out.println("水曜日");
            break;
        default:
            System.out.println("該当する曜日がありません");
            break;
        }
    }

}

実行結果

火曜日

今回はday2が入っています。

case 2:と値が一致するため、その下に書かれている「火曜日」が表示されます。

今度はdayの値を13に変更して、表示される曜日が変わることも確認してみましょう。

breakは何のためにある?

caseの最後に書いているbreakは、switch文の処理をそこで終了するために使います。

breakの書き忘れに注意しよう

breakを書かない場合、一致したcaseの処理が終わったあとも、次のcaseの処理へ進みます。

今の段階では、**「caseの処理が終わったらbreakを書く」**と覚えておきましょう。

if文とswitch文はどう使い分ける?

if文は、

「80以上」
「20以上かつ29以下」

のような、条件を使って判断するときに向いています。

switch文は、

「1の場合」
「2の場合」
「3の場合」

のように、決まった値ごとに処理を分けたいときに使うと分かりやすくなります。

どちらでも書ける場合もあるので、まずは「こういう使い分けができる」と覚えておけば大丈夫です。

よくある間違い

条件分岐では、記号の書き間違いや条件を書く順番によって、エラーになったり思ったとおりに動かなかったりすることがあります。

よくある間違いを確認しておきましょう。

「=」と「==」を間違える

値が等しいかを比較するときは、==を使います。

⚠ 「=」は代入、「==」は比較

= → 変数に値を代入する

== → 左右の値が等しいか比較する

例えば、条件として「scoreが80と等しい」と書く場合は、

score == 80

となります。

===は見た目が似ているので注意しましょう。

else ifの条件を書く順番

複数の条件を書く場合は、条件を確認する順番も重要です。

例えば、

if (score >= 60) {
    System.out.println("B");
} else if (score >= 80) {
    System.out.println("A");
}

この書き方では、score90でも最初のscore >= 60trueになります。

その時点で「B」が表示されるため、次のscore >= 80は確認されません。

今回の場合は、次のように大きい値から確認します。

if (score >= 80) {
    System.out.println("A");
} else if (score >= 60) {
    System.out.println("B");
}

if~else ifでは、上から順番に条件を確認し、最初にtrueになった処理だけが実行されることを覚えておきましょう。

「&&」と「||」を間違える

複数の条件を組み合わせる場合は、&&||の違いにも注意しましょう。

&& → 両方の条件を満たす「かつ」

|| → どちらかの条件を満たす「または」

例えば、

age >= 20 && age <= 29

なら、「20歳以上かつ29歳以下」という意味になります。

迷ったときは、条件を日本語に置き換えて考えてみましょう。

switch文のbreakを書き忘れる

switch文では、breakの書き忘れにも注意が必要です。

breakを書かないと、一致したcaseの処理が終わったあと、その次のcaseの処理にも進んでしまいます。

基本的なswitch文では、

case → 処理 → break

をセットで書くと覚えておきましょう。

STEP4のまとめ

このSTEPでは、条件によって実行する処理を変える「条件分岐」について学びました。

最後に、今回のポイントを振り返っておきましょう。

  • ifを使うと、条件がtrueのときだけ処理を実行できる
  • elseを使うと、条件がfalseだった場合の処理も書ける
  • else ifを使うと、3つ以上の処理に分けることができる
  • if~else ifでは、上から順番に条件が確認される
  • &&||を使うと、複数の条件を組み合わせることができる
  • switchを使うと、決まった値ごとに処理を分けることができる
  • switchでは、基本的にcaseの処理の最後にbreakを書く

条件分岐を使えるようになると、プログラムの中で「状況によって動きを変える」ことができるようになります。

今後のSTEPでも何度も登場するので、実際にコードを書きながら少しずつ慣れていきましょう。

ルミィ
ルミィ

STEP4クリア!
ifが使えるようになると、できることが一気に増えるよ♪
条件を日本語で考えてからコードにすると分かりやすいよ!

次のSTEPへ

次のSTEPでは、キーボードから入力した値をプログラムで受け取る方法を学びます。

例えば、

「名前を入力してください」

と表示して、入力された名前を使って、

「こんにちは、○○さん!」

と表示するようなプログラムを作れるようになります。

次のSTEPでは、Scannerを使って実際に値を入力しながらプログラムを動かしてみましょう。

STEP5「キーボードから値を入力してみよう」

記事URLをコピーしました