第5回では条件分岐(if文)についての学習をしました。今回は条件分岐(switch文)について解説していきます。

switch文

対象の式を評価した結果の値に一致するラベル(case文)の中の処理を実行する場合にswitch文を使用します。

  • switch文の書式
switch (式){
  case 定数1:
    実行する文1;
    実行する文2;
    ……
    break;
  case 定数2:
    実行する文1;
    実行する文2;
    ……
    break;
  default:
    式の評価がどれも一致しなかったときの処理;
}

switch文では、まず式が評価されます。式には値が代入された変数や計算式などを記述することができますが、浮動小数点数や文字列ではなく、必ず式の評価した結果が整数(byte,char,short,int)でなければなりません。

指定した式と定数の値が一致した場合に、そのラベルの中の処理をします。ラベルの最後に書かれている「break」はプログラムの終了を意味します。break文がない場合、定数の値が一致したラベルの中の処理を実行したあとに、次のラベルの中の処理を実行します。

「default」は、式の値と一致する定数がなかった場合に実行させたい処理を記述します。実行させたい処理がない場合は記述する必要はありません。

  • switch文の例
int i = 3;

switch(i){
 case 1: // iが1の場合
   System.out.println("iの値は1です");
   break;
 case 2: // iが2の場合
   System.out.println("iの値は2です");
   break;
 case 3: // iが3の場合
   System.out.println("iの値は3です");
   break;
 default: // iが1、2、3以外の場合
   System.out.println("それ以外の値です");
}

この場合、iが3なので定数が3の中の処理が実行され、「iの値は3です」と表示されます。そのあとに「break;」が実行されてswitch文は終了します。

  • switch文(「default」を記述しない場合)の例
int gender = 1;

switch(i){
 case 1: // genderが1の場合
   System.out.println("性別は男性です");
   break;
 case 2: // genderが2の場合
   System.out.println("性別は女性です");
   break;
 case 3: // genderが3の場合
   System.out.println("性別は不明です");
   break;
}

この場合、genderが1なので定数が1の中の処理が実行され、「性別は男性です」と表示されます。このswitch文は「default」が省略されています。

  • switch文(「break」を記述しない場合)の例1
int i = 2;

switch(i){
 case 1: // iが1の場合
   System.out.println("iの値は1です");
 case 2: // iが2の場合
   System.out.println("iの値は2です");
 case 3: // iが3の場合
   System.out.println("iの値は3です");
 default: // iが1、2、3以外の場合
   System.out.println("それ以外の値です");
}

この場合、iが2なので定数が2の中の処理が実行され「iの値は2です」と表示されます。「break;」が記述されていないので、次に定数が3の中の処理が実行され「iの値は3です」と表示されます。このあとにも「break;」が記述されていないので「default」の中の処理が実行され「それ以外の値です」と表示されます。しかし、これではiの値が2以外の場合の処理が実行されてしまい、表示される内容がおかしくなってしまいます。そのため、実際に使用する際は、次の例2のようになるでしょう。

  • switch文(「break」を記述しない場合)の例2
int exam = 2;

switch(exam){
  case 1:
    System.out.println("合格");
    break;
  case 2:
    System.out.println("不合格");
  case 3:
    System.out.println("追試です");
    break;
}

上記プログラムで、examが1だった場合には「合格」と表示して、breakが実行されてswitch文を終了しますが、この場合にはexamが2なので、「不合格」と表示したあとに、定数が3の場合の処理へ移動します。そして「追試です」と表示してswitch文が終了します。


今回は条件分岐(switch文)について解説しました。次回もJavaの基本構文について解説していく予定です。

執筆者紹介

八重桜雅子(YAEZAKURA Masako)

以前はシステム開発会社で約8年間働いていました。JavaやJavaScriptなどのWeb系の技術をよく使用していました。