switch文
条件により処理を分岐させるif文を見てきましたが、処理を分岐させるステートメント(命令)として、switch文もあります。このステートメントは、評価対象となる式の値を基に、処理を分岐させます。
switch文の書式 |
---|
switch(評価式){ case 式1: 処理1; break; case 式2: 処理2; break; … default: 処理n; break; } |
例:
switch(num){
case 1:
System.out.println(“1です。”):
break;
default:
System.out.println(“1以外です。”):
break;
}
○ ファイル
次のようにファイルを作成してください。
ファイル名 | SwitchTest.java |
---|
○ プログラム
次のようにプログラムを入力してください。
SwitchTest.java
- import java.io.*;
- class SwitchTest{
- public static void main(String[] args) throws Exception{
- //データを入力する準備をする
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- //データを入力する
- System.out.print("「平日」か「休日」を入力してください:");
- String str = br.readLine();
- //入力データによって処理を分岐する
- switch(str){
- case "平日": //平日の場合
- System.out.println("今日は仕事があります。");
- break;
- case "休日": //休日の場合
- System.out.println("今日は遊びに行きましょう。");
- break;
- default: //その他の場合
- System.out.println("今日は家でおとなしくしていましょう。");
- break;
- }
- }
- }
○ コンパイルと実行
C:¥work>javac SwitchTest.java
C:¥work>java SwitchTest
「平日」か「休日」を入力してください:平日
今日は仕事があります。
C:¥work>java SwitchTest
「平日」か「休日」を入力してください:休日
今日は遊びに行きましょう。
C:¥work>java SwitchTest
「平日」か「休日」を入力してください:その他
今日は家でおとなしくしていましょう。
C:¥work>
○ フローチャート
○ 解説
13行目では、入力したデータが格納されている変数strを、評価対象としてswitch文にセットしています。そのデータを複数のcase文で比較していきます。
14行目では、変数strが「平日」の場合、15行目が実行されます。16行目で「break」文が指定されているので、この行が実行されるとswitch文が終了します。このケースに当てはまらない場合、次のケースである17行目のケースが評価されます。変数strが「休日」の場合、18行目が実行され、19行目でswtich文を終了します。このケースに当てはまらない場合、20行目が実行されます。この行のケースは「default」となっているので、今までのケースに当てはまらない場合に実行されます。
switch文case文を上から順番に評価し、breakが指定されるか、switch文のブロックが終了するまで実行します。もしいずれのケースにも当てはまらなかったら「default」の部分が実行されます。また、この「default」は省略することもできます。評価結果が当てはまるcase文のプログラムをbreak文が出現するまで実行されます。break文を記述し忘れると、実行されるcase内のプログラムから次のcaseのプログラムへと、次々と実行されるので注意してください。