Javaの条件分岐:switch文
Java で条件分岐を実現する方法として if 文がありますが、switch 文を使うことでも条件分岐を行うことができます。ここでは、switch 文の使い方と、使う上での注意点について説明します。
switch 文の使い方
switch 文は以下のように記述します。
switch (変数) {
case 値1:
変数が値1と等しいときに実行される処理
case 値2:
変数が値2と等しいときに実行される処理
case 値3:
変数が値3と等しいときに実行される処理
case 値4:
変数が値4と等しいときに実行される処理
default:
変数がどの値とも等しくないときに実行される処理
}
switch 文の後の () に評価する変数を記述します。この変数が case とコロン : の値に記述した値と順々に評価されていきます。もし変数が指定した値と等しい場合は、その後に記述したコードが実行されます。
case 文はいくつでも記述することが可能です。また、最後の defalut 文のコードは、変数が case 文で指定したすべての値と等しくないときに実行されます。
以下は switch 文を使ったプログラム例です。
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 文を省略したときの例です。
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 文で記述した例です。
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 文とうまく使い分けることによって、より良いコードを作成することができます。