プログラミングをする上で、条件分岐を組み込むことは少なくないと思います。
条件分岐には、if文がありますが、いくつも連なるとソースコードの可視性損なってくるでしょう。
今回は、そんな時に役立つ構文:switch文について、まとめます。
switch文とは
一般的にプログラミングの構文の1つである条件分岐には、if文の他にもswitch文が存在します。
swtich文では、1つの条件式から得られる結果により、処理を分けるような構文です。
この時、得られる結果は複数のパターンが存在する場合に有効的なものです。
基本形
基本的な構文は、以下です。
コードサンプル:
switch (式){
case “得られる結果「A」”:
// 条件式の結果が「A」となる場合に実行する処理を記載
break;
case “得られる結果「B」”:
// 条件式の結果が「B」となる場合に実行する処理を記載
break;
・
・
・}
なお、基本的にはcaseの処理を記載した最後は「break;」を必ず入れるようにしましょう。
Javaで記載されたswitch文のコードの例を以下に示します。
コードサンプル:
public static void main(String[] args) throws Exception {
int num = 10;
switch(num % 2){
case 0:
System.out.println(“偶数です”);
break;
case 1:
System.out.println(“奇数です”);
break;
}
}
実行結果:
偶数です
上記では、switchの「式」に数式を入れましたが、「int型」「String型」などが使用できます。逆に言うと、小数となる型である「float型」「double型」や「String型」を除く参照型は指定できません。
また、caseの「得られる結果」には、変数を用いることができないので、注意が必要です。
フォールスルー
先述の基本形で、「基本的には「break;」を必ず入れるようにしましょう。」と記載しましたが、意図して入れない場合もあります。
「break」を入れないで記述する方法を「フォールスルー」と言います。
では、入れなかった場合は、どう動くかを見ていきます。
Javaで記載されたswitch文のコードの例を以下に示します。
コードサンプル:
public class Sample {
public static void main(String[] args) throws Exception {
int num = 6;
switch(num / 2){
case 0:
case 2:
System.out.println(“商は偶数です”);
break;
case 1:
case 3:
System.out.println(“商は奇数です”);
break;
}
}
}
実行結果:
商は奇数です
ただし、安易にフォールスルーを利用するのは、オススメしません。
例えば以下のような場合は、意図せぬ出力もされてしまうためです。そのため、「基本的には「break;」を必ず入れるようにしましょう。」と記載しました。
コードサンプル:
public class Sample {
public static void main(String[] args) throws Exception {
int num = 4;
switch(num % 2){
case 0:
System.out.println(“商は偶数です”);
case 1:
System.out.println(“商は奇数です”);
}
}
}
実行結果:
商は偶数です
商は奇数です
caseで指定した内容に当てはまらない場合
いずれかのcaseにも当てはまらない結果を得た場合は、どうなるのでしょうか?
処理が記載していない場合は、何も処理がされずに通過してしまいます。エラーにもなりません。
このように、いずれのcaseにも当てはまらない時に、実行させたいことも出てくることでしょう。
そのような場合の処理を記載するには、「default」を使用します。
Javaで記載されたswitch文のコードの例を以下に示します。
コードサンプル:
public class Sample {
public static void main(String[] args) throws Exception {
int num = 5;
switch(num % 3){
case 0:
System.out.println(“あまりは「0」です”);
case 1:
System.out.println(“あまりは「1」です”);
default:
System.out.println(“あまりは「0」でも「1」でもありません”);
}
}
}
実行結果:
あまりは「0」でも「1」でもありません
まとめ
今回は、条件分岐の1つであるswitch文について記載しました。
1つの条件文から複数の結果が得られる際の場合分けには、非常に適した構文です。
ぜひ、参考にしてみて下さい。