これまでの記事で、変数とデータ型を学びました。 今回はいよいよ、プログラムが 「考える」 最初のステップ — 条件分岐 に進みます。
「もしテストの点数が80点以上なら『合格』、そうでなければ『不合格』と表示する」のような処理を、Java でどう書くかを学んでいきましょう。
条件分岐とは
条件分岐(じょうけん ぶんき) とは、プログラムの 流れを条件によって変えること です。 日常生活の意思決定と同じ仕組みで、
「もし 雨が降っていたら、そうしたら 傘を持っていく。そうでなければ 持っていかない」
これをプログラムで表現するのが、if 文 や switch 文 です。
比較演算子 — 「等しい」「より大きい」を表す
条件を書くには、まず 比較演算子 を覚える必要があります。
| 演算子 | 意味 | 例 | 結果 |
|---|---|---|---|
== | 等しい | 5 == 5 | true |
!= | 等しくない | 5 != 3 | true |
> | より大きい | 5 > 3 | true |
< | より小さい | 5 < 3 | false |
>= | 以上 | 5 >= 5 | true |
<= | 以下 | 5 <= 3 | false |
⚠ 代入の
=は1つ、比較の==は2つ! ここを間違えるのが初心者あるあるです。
if 文 — 「もし◯◯なら」
もっとも基本的な条件分岐が if 文 です。
基本形
if (条件式) {
// 条件が true のときに実行される処理
}
例: 点数が 80 以上なら「合格」と表示
public class IfDemo {
public static void main(String[] args) {
int score = 85;
if (score >= 80) {
System.out.println("合格!");
}
}
}
実行結果:
合格!
score を 70 にして実行すると、何も表示されません。条件が false なので if の中身がスキップされるためです。
if-else — 「そうでなければ」も書く
「条件に当てはまらない場合」も処理したいときは、else を使います。
public class IfElseDemo {
public static void main(String[] args) {
int score = 70;
if (score >= 80) {
System.out.println("合格!");
} else {
System.out.println("不合格...");
}
}
}
実行結果:
不合格...
if-else if-else — 3 つ以上の分岐
3 つ以上の条件を扱いたい場合は、else if をつなげます。
public class GradeDemo {
public static void main(String[] args) {
int score = 75;
if (score >= 90) {
System.out.println("評価: A");
} else if (score >= 70) {
System.out.println("評価: B");
} else if (score >= 50) {
System.out.println("評価: C");
} else {
System.out.println("評価: D");
}
}
}
実行結果(score = 75 の場合):
評価: B
💡 上から順番にチェックされ、最初に true になった枝だけ が実行されます。
論理演算子 — 複数の条件を組み合わせる
「A かつ B」「A または B」のように、複数の条件を組み合わせるには 論理演算子 を使います。
| 演算子 | 意味 | 例 |
|---|---|---|
&& | かつ (AND) | age >= 18 && age < 65 |
|| | または (OR) | day == "土" || day == "日" |
! | ではない (NOT) | !isHoliday |
例: 年齢が18歳以上65歳未満なら「現役世代」
int age = 30;
if (age >= 18 && age < 65) {
System.out.println("現役世代");
} else {
System.out.println("現役世代ではない");
}
例: 土日なら「休日」
String day = "土";
if (day.equals("土") || day.equals("日")) {
System.out.println("休日!");
} else {
System.out.println("平日");
}
⚠ 文字列の比較には
==ではなく.equals()を使います。Java では文字列の==は別の意味になり、思った通りに動かないことがあります。
switch 文 — 値ごとに分岐したいとき
「変数の値が A なら〜、B なら〜、C なら〜」のような 値による多分岐 には、switch 文を使うと読みやすくなります。
public class SwitchDemo {
public static void main(String[] args) {
String day = "月";
switch (day) {
case "月":
System.out.println("週の始まりです!");
break;
case "金":
System.out.println("もうすぐ週末!");
break;
case "土":
case "日":
System.out.println("お休み!");
break;
default:
System.out.println("普通の平日");
break;
}
}
}
実行結果(day = “月” の場合):
週の始まりです!
switch を使うときのポイント
breakを書き忘れると、次のcaseまで処理が流れる(これを「フォールスルー」と呼ぶ)defaultは「どのcaseにも当てはまらないとき」の処理。省略可能だが、書いておくと安全- 同じ処理をしたい複数の
caseは連続して書ける(上の例の「土」「日」)
switch 式(Java 14 以降の新しい書き方)
Java 14 以降では、switch 式 という新しい書き方が使えます。
こちらのほうがシンプルで安全(break 不要、フォールスルーなし)なので、今後はこちらが主流です。
String day = "月";
String message = switch (day) {
case "月" -> "週の始まりです!";
case "金" -> "もうすぐ週末!";
case "土", "日" -> "お休み!";
default -> "普通の平日";
};
System.out.println(message);
矢印 (->) を使い、結果を変数に代入できる点がポイントです。
ネスト(入れ子) — if の中に if を入れる
if 文の中に、さらに if 文を書くこともできます。これを ネスト(入れ子構造) と呼びます。
int age = 30;
boolean hasLicense = true;
if (age >= 18) {
if (hasLicense) {
System.out.println("運転できます");
} else {
System.out.println("免許が必要です");
}
} else {
System.out.println("18歳未満は運転できません");
}
💡 ネストが3階層以上になると読みにくくなるので、
&&で1つのifにまとめるか、メソッドに分割する(後の連載で解説)のが望ましいです。
練習問題
以下のプログラムを書いてみましょう。
ある人の テストの点数(0〜100) を変数
scoreに格納し、以下の評価をコンソールに表示するプログラム。
- 90 点以上 → 「優」
- 70 点以上 → 「良」
- 50 点以上 → 「可」
- それ未満 → 「不可」
ただし、点数が 0 未満または 100 を超えていたら、「無効な点数です」と表示する。
解答例
public class Grade {
public static void main(String[] args) {
int score = 75;
if (score < 0 || score > 100) {
System.out.println("無効な点数です");
} else if (score >= 90) {
System.out.println("優");
} else if (score >= 70) {
System.out.println("良");
} else if (score >= 50) {
System.out.println("可");
} else {
System.out.println("不可");
}
}
}
実行結果(score = 75 の場合):
良
score の値を変えながら実行して、すべての分岐が正しく動くか確認してみましょう。
まとめ
第3回では、以下を学びました。
- ✅ 比較演算子 (
==,!=,>,<,>=,<=) で2つの値を比較できる - ✅
if文 /if-else/if-else if-elseで条件によって処理を分岐できる - ✅ 論理演算子 (
&&,||,!) で複数の条件を組み合わせられる - ✅ 文字列の比較は
.equals()を使う - ✅
switch文 は値による多分岐に向いている - ✅ Java 14 以降の
switch式 はより簡潔に書ける
次回は、「同じ処理を何度も繰り返す」 仕組みである for 文・while 文 を学びます。
プログラミングの恩恵を一番感じられるテーマですので、お楽しみに!