Java | switch文

Java Java
スポンサーリンク

1. switch は何をするもの?

  • 「変数(や式)のを見て、値ごとに処理を切り替える」ための構文です。
  • 候補が複数あるときに if-else より読みやすく書けます。

2. 基本の書き方(いちばんシンプルな形)

switch (式) {
  case 値1:
    // 値1のときの処理
    break;
  case 値2:
    // 値2のときの処理
    break;
  default:
    // どれにも当てはまらないときの処理
}
Java

ポイント:break; を忘れると、その後の case の処理も続けて実行されてしまいます(フォールスルー)。


3. 動きのイメージ

評価 -> switch(式)
          |
   ---------------------
   |    |    |    |    |
 case1 case2 case3 ... default
   |     |     |          |
処理A  処理B  処理C    処理D
   |     |     |          |
 (breakで抜ける)   (最後に抜ける)

4. 例1:整数で分岐(基本)

int num = 2;
switch (num) {
  case 1:
    System.out.println("1 です");
    break;
  case 2:
    System.out.println("2 です");
    break;
  case 3:
    System.out.println("3 です");
    break;
  default:
    System.out.println("1〜3 以外です");
}
Java

結果:2 です が出力されます。


5. break を忘れるとどうなる?(フォールスルーの例)

int num = 2;
switch (num) {
  case 1:
    System.out.println("case 1");
  case 2:
    System.out.println("case 2");
  case 3:
    System.out.println("case 3");
}
Java

結果:

case 2
case 3

case 2 に一致した後、break がないので下の case 3 の処理まで続けて実行されます。

フォールスルーは意図的に使う場面(次で説明)もありますが、多くはバグの原因になります。初心者は基本的に case の最後に break; を書くクセをつけましょう。


6. 例2:同じ処理を複数の値でまとめる(便利)

int num = 3;
switch (num) {
  case 1:
  case 3:
  case 5:
    System.out.println("奇数です");
    break;
  case 2:
  case 4:
    System.out.println("偶数です");
    break;
  default:
    System.out.println("1〜5 以外です");
}
Java

num == 3 のとき "奇数です" が出ます。複数の case を連続して書くことで、同じ処理にまとめられます。


7. 使える型(よくある制約)

  • 使えるもの:byte, short, int, char, String, enum(列挙型)。
  • 使えないもの(そのままはNG):long, float, double, booleanboolean は if で扱うのが普通)。
  • case に指定する値は 定数(リテラルや final 定数)。変数の値をそのまま書けません。

8. 例3:String を使った switch(名前で分岐する例)

String fruit = "apple";
switch (fruit) {
  case "apple":
    System.out.println("りんごです");
    break;
  case "banana":
    System.out.println("バナナです");
    break;
  default:
    System.out.println("不明なフルーツ");
}
Java

9. 例4:enum(列挙型)と組み合わせる(実務でもよく使う)

enum Day { MON, TUE, WED, THU, FRI, SAT, SUN }

Day today = Day.WED;
switch (today) {
  case SAT:
  case SUN:
    System.out.println("週末");
    break;
  default:
    System.out.println("平日");
}
Java

10. よくある間違い(初心者がやりがち)

  • break; を忘れて予期しない複数処理が実行される。
  • case に変数を書いてしまう(case x: は不可。定数が必要)。
  • switch の式に使えない型(たとえば long)を使おうとしてコンパイルエラーになる。
  • default を必ず書くべきと考える人がいるが、必須ではない(ただし書いておくと安全)。

11. 実践練習問題

問題1

変数 score が 90 以上なら "A", 80〜89 なら "B", 70〜79 なら "C", それ以外は "F" を出すプログラムを switch で書いてください。
(ヒント:score / 10 を使うと範囲で分けやすい)

解答例1

int score = 85;
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

問題2

day という String"Mon", "Tue", … の値を取り、週末なら "Weekend", 平日なら "Weekday" を出す switch を書いてください。

解答例2

String day = "Sat";
switch (day) {
  case "Sat":
  case "Sun":
    System.out.println("Weekend");
    break;
  default:
    System.out.println("Weekday");
}
Java

問題3(ややチャレンジ)

列挙型 TrafficLight { RED, YELLOW, GREEN } を作り、TrafficLight の値に応じて "止まれ", "注意", "進め" を出す switch を書いてください。

解答例3

enum TrafficLight { RED, YELLOW, GREEN }
TrafficLight light = TrafficLight.YELLOW;
switch (light) {
  case RED:
    System.out.println("止まれ");
    break;
  case YELLOW:
    System.out.println("注意");
    break;
  case GREEN:
    System.out.println("進め");
    break;
}
Java

まとめ(初心者が覚えておくべき最重要ポイント)

  1. switch は「値を候補と比較して処理を切り替える」ために使う。
  2. case の最後には原則 break; を書く(フォールスルー回避)。
  3. default は「どれにも当てはまらない場合」の処理。つけておくと安全。
  4. case に書くのは定数。式や変数は使えない(例外的にコンパイル時定数はOK)。
  5. 型の制約に注意(Stringenum は OK、longdouble は NG)。

Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました