条件分岐のif文では、xxxの場合は○○○の処理、
zzzの場合は△△△の処理をする。
といったプログラムを作りましたが、
今回は、条件分岐が非常に多い時に重宝するswitch文を説明します。
1~12と数字を入れると、
1月から12月までの月を英語表記で表示するプログラムを
作る事にします。
import java.util.*;
public class Cmain {
public static void main(String[] args) {
int a;
Scanner scan = new Scanner(System.in);
System.out.printf("月を入力して下さい。(1~12月)\n");
a = scan.nextInt();
switch (a) {
case 1:
System.out.printf("January\n");
break;
case 2:
System.out.printf("February\n");
break;
case 3:
System.out.printf("March\n");
break;
case 4:
System.out.printf("April\n");
break;
case 5:
System.out.printf("May\n");
break;
case 6:
System.out.printf("June\n");
break;
case 7:
System.out.printf("July\n");
break;
case 8:
System.out.printf("August\n");
break;
case 9:
System.out.printf("September\n");
break;
case 10:
System.out.printf("October\n");
break;
case 11:
System.out.printf("November\n");
break;
case 12:
System.out.printf("December\n");
break;
default:
System.out.printf("エラー\n");
}
}
}
プログラムを実行すると以下のようになります。
月を入力して下さい。(1~12月)
1
January
月を入力して下さい。(1~12月)
13
エラー
成功すると上記のように表示されます。
まず、新しい記述が出てきました。
switch (a)
()の中には、比較対象とする変数などを入れます。
この場合は、変数aを対象とする。という意味になります。
case文は、「変数aが1の場合」と言う意味です。
そして、変数aが1の場合、その下の文が実行されます。
caseの後ろは、セミコロン(;)ではなく、
コロン(:)なので、注意してください。
break文は、switch文を抜けると言う意味です。
defaultは、上で書いたcase文のどれにも当てはまらなかった場合。
と言う意味です。
この場合、1~12の数値を対象としてるので、
それ以外の数値の場合は、
“エラー”と表示するようにしました。
このプログラムをif文で書き換えるとしたら、
else if ~~~と言う記述が多なってしまい、
見た目的にも、分かりやすさ的にもswitch文に軍配が上がります。
if文とswitch文のどちらを使うかは、その時の状況に応じて
適切に使い分けて下さい。