if-else から switch への書き換えは、
「条件の構造を整理して頭の中をスッキリさせる」最高の練習です。
ここでは、初級〜中級レベルの練習問題(全6問)+解答 をセットで紹介します。
すべて Java 初心者でも実行できる内容です。
【問題1】基本:数字で分ける
int num = 3;
if (num == 1) {
System.out.println("りんご");
} else if (num == 2) {
System.out.println("みかん");
} else if (num == 3) {
System.out.println("ぶどう");
} else {
System.out.println("なし");
}
Java🔍【書き換えヒント】
- 値が「1」「2」「3」など固定 →
switchにぴったり
✅【解答例】
switch (num) {
case 1:
System.out.println("りんご");
break;
case 2:
System.out.println("みかん");
break;
case 3:
System.out.println("ぶどう");
break;
default:
System.out.println("なし");
}
Java【問題2】複数の条件が同じ処理
int day = 6;
if (day == 6 || day == 7) {
System.out.println("週末です");
} else {
System.out.println("平日です");
}
Java🔍【書き換えヒント】
- 「6または7」は
caseを並べればOK!
✅【解答例】
switch (day) {
case 6:
case 7:
System.out.println("週末です");
break;
default:
System.out.println("平日です");
}
Java【問題3】文字列(String)で分岐
String animal = "cat";
if (animal.equals("dog")) {
System.out.println("いぬ");
} else if (animal.equals("cat")) {
System.out.println("ねこ");
} else if (animal.equals("bird")) {
System.out.println("とり");
} else {
System.out.println("その他");
}
Java🔍【書き換えヒント】
- Java 7 以降では
switchでStringが使える!
✅【解答例】
switch (animal) {
case "dog":
System.out.println("いぬ");
break;
case "cat":
System.out.println("ねこ");
break;
case "bird":
System.out.println("とり");
break;
default:
System.out.println("その他");
}
Java【問題4】成績(範囲を変換して対応)
int score = 83;
if (score >= 90) {
System.out.println("A");
} else if (score >= 80) {
System.out.println("B");
} else if (score >= 70) {
System.out.println("C");
} else {
System.out.println("F");
}
Java🔍【書き換えヒント】
- 範囲は
switchでは直接できない。 - なので「十の位」でまとめる(
score / 10)!
✅【解答例】
switch (score / 10) {
case 10:
case 9:
System.out.println("A");
break;
case 8:
System.out.println("B");
break;
case 7:
System.out.println("C");
break;
default:
System.out.println("F");
}
Java【問題5】列挙型(enum)で状態を分岐
String signal = "YELLOW";
if (signal.equals("RED")) {
System.out.println("止まれ");
} else if (signal.equals("YELLOW")) {
System.out.println("注意");
} else if (signal.equals("GREEN")) {
System.out.println("進め");
}
Java🔍【書き換えヒント】
enumにすると型安全に書ける(実務ではこちら推奨)
✅【解答例】
enum Signal { RED, YELLOW, GREEN }
Signal s = Signal.YELLOW;
switch (s) {
case RED:
System.out.println("止まれ");
break;
case YELLOW:
System.out.println("注意");
break;
case GREEN:
System.out.println("進め");
break;
}
Java【問題6】月ごとの日数(やや応用)
int month = 4;
if (month == 1 || month == 3 || month == 5 ||
month == 7 || month == 8 || month == 10 || month == 12) {
System.out.println("31日あります");
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
System.out.println("30日あります");
} else if (month == 2) {
System.out.println("28日または29日です");
} else {
System.out.println("不正な月です");
}
Java🔍【書き換えヒント】
- 同じ処理の月を
caseでまとめる!
✅【解答例】
switch (month) {
case 1: case 3: case 5: case 7:
case 8: case 10: case 12:
System.out.println("31日あります");
break;
case 4: case 6: case 9: case 11:
System.out.println("30日あります");
break;
case 2:
System.out.println("28日または29日です");
break;
default:
System.out.println("不正な月です");
}
Javaまとめ:書き換えのコツ
| if-else の形 | switch にするときの考え方 |
|---|---|
== 比較が連続 | そのまま case 値: に書き換え |
| ` | |
>=, <= など範囲条件 | 加工して値をグループ化(例:score/10) |
String 比較(equals) | そのまま case "文字列" に |
| 定義済みの状態値 | enum に変換して switch |
