Java で条件分岐を実現する方法として if 文がありますが、switch 文を使うことでも条件分岐を行うことができます。ここでは、switch 文の使い方と、使う上での注意点について説明します。
switch 文の使い方
switch 文は以下のように記述します。
1 2 3 4 5 6 7 8 9 10 11 12 |
switch (変数) { case 値1: 変数が値1と等しいときに実行される処理 case 値2: 変数が値2と等しいときに実行される処理 case 値3: 変数が値3と等しいときに実行される処理 case 値4: 変数が値4と等しいときに実行される処理 default: 変数がどの値とも等しくないときに実行される処理 } |
switch 文の後の () に評価する変数を記述します。この変数が case とコロン : の値に記述した値と順々に評価されていきます。もし変数が指定した値と等しい場合は、その後に記述したコードが実行されます。
case 文はいくつでも記述することが可能です。また、最後の defalut 文のコードは、変数が case 文で指定したすべての値と等しくないときに実行されます。
以下は switch 文を使ったプログラム例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
class Sample { public static void main(String args[]) { int n = 3; switch (n) { case 1: System.out.println("one"); break; case 2: System.out.println("two"); break; case 3: System.out.println("three"); // three break; default: System.out.println(n); } } } |
上のプログラムでは、まず n = 3 で初期化しています。そして最初に n と 1 が比較され等しくないので、次に n と 2 が比較されます。これも等しくないので、n と 3 が比較されます。 n は 3 と等しいので、 case 3: の後のコードが実行され「three」と表示されます。
ここで注意してもらいたいのが、すべての case 文の後に break 文が挿入されていることです。Java の switch 文では、変数が case 文の値と順々に評価されていきますが、もし break 文がない場合は必ずすべての case 文と default 文が評価されてしまいます。
以下は break 文を省略したときの例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class Sample2 { public static void main(String args[]) { int n = 3; switch (n) { case 1: System.out.println("one"); case 2: System.out.println("two"); case 3: System.out.println("three"); // three default: System.out.println(n); // 3 } } } |
この場合は、「three」と表示され後も switch 文から抜け出さずに default 文まで実行されてしまいます。もし switch 文を使用した場合に意図しない結果になったときは、break 文を記述し忘れていないか確認してみると良いでしょう。
switch 文を if 文で記述した場合
switch 文は条件分岐であるので、if 文でも記述できます。
以下は最初のプログラムを if 文で記述した例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class Sample3 { public static void main(String args[]) { int n = 3; if (n == 1) { System.out.println("one"); } else if (n == 2) { System.out.println("two"); } else if (n == 3) { System.out.println("three"); // three } else { System.out.println(n); } } } |
このプログラムをコンパイルして実行すると、「three」が表示されます。同じ動作をするコードですが、switch 文で記述した方が条件式をより簡潔に記述することができます。条件式が複雑な場合は if 文を使うなどして、switch 文とうまく使い分けることによって、より良いコードを作成することができます。