Javaの分岐構造-switch
18147 ワード
if
文に加えて、条件判定があり、switch
は、ある表現の結果に基づいて、それぞれ異なる分岐を実行する。例えば、ゲームにおいて、ユーザにオプションを選択させる。
switch
文が役に立ちます。switch
文は、switch
(表現)によって計算された結果、一致したcase
の結果にジャンプし、break
が実行を終了するまで、後続の文を実行し続ける。public class Main {
public static void main(String[] args) {
int option = 1;
switch (option) {
case 1:
System.out.println("Selected 1");
break;
case 2:
System.out.println("Selected 2");
break;
case 3:
System.out.println("Selected 3");
break;
}
}
}
option
の値はそれぞれ1、2、3であり、実行結果を観察する。option
の値が任意のcase
、例えばoption = 99
に一致していない場合、switch
のステートメントは実行されない。この場合、switch
文にdefault
を追加してもよく、case
と一致していない場合は、default
を実行する。public class Main {
public static void main(String[] args) {
int option = 99;
switch (option) {
case 1:
System.out.println("Selected 1");
break;
case 2:
System.out.println("Selected 2");
break;
case 3:
System.out.println("Selected 3");
break;
default:
System.out.println("Not selected");
break;
}
}
}
switch
文をif
文に翻訳すれば、上記のコードは以下の通りである。if (option == 1) {
System.out.println("Selected 1");
} else if (option == 2) {
System.out.println("Selected 2");
} else if (option == 3) {
System.out.println("Selected 3");
} else {
System.out.println("Not selected");
}
複数の==
が判断する場合には、switch
を用いて構成がより明確である。なお、上記の「翻訳」は
switch
文の中でcase
文ごとに正しくbreak
文を作成してこそ適切である。switch
を使用する場合、カッコつけcase
文がないことに注意してください。また、{}
文は「透過性」を有しています。書き落としcase
は思わぬ結果をもたらすでしょう。public class Main {
public static void main(String[] args) {
int option = 2;
switch (option) {
case 1:
System.out.println("Selected 1");
case 2:
System.out.println("Selected 2");
case 3:
System.out.println("Selected 3");
default:
System.out.println("Not selected");
}
}
}
break
の場合は、option = 2
、Selected 2
、Selected 3
、Not selected
から順に出力される。これは一致からcase 2
までで、後続のステートメントは全部実行される。ですから、いつでも忘れずに書いてください。いくつかの
break
文が同じブロックのセットで実行されている場合、このように書くことができる。public class Main {
public static void main(String[] args) {
int option = 2;
switch (option) {
case 1:
System.out.println("Selected 1");
break;
case 2:
case 3:
System.out.println("Selected 2, 3");
break;
default:
System.out.println("Not selected");
break;
}
}
}
break
文を使用する場合、case
文がある限り、switch
の順序はプログラム論理に影響しません。しかし、自然の順に並べて読むのが楽です。break
文はまた文字列にマッチすることができる。文字列が一致する場合は、「内容が等しい」と比較します。たとえば: public class Main {
public static void main(String[] args) {
String fruit = "apple";
switch (fruit) {
case "apple":
System.out.println("Selected apple");
break;
case "pear":
System.out.println("Selected pear");
break;
case "mango":
System.out.println("Selected mango");
break;
default:
System.out.println("No fruit selected");
break;
}
}
}