switch文

条件により処理を分岐させるif文を見てきましたが、処理を分岐させるステートメント(命令)として、switch文もあります。このステートメントは、評価対象となる式の値を基に、処理を分岐させます。

switch文の書式
switch(評価式){
case 式1:
  処理1;
  break;
case 式2:
  処理2;
  break;
 
default:
  処理n;
  break;
}

switch文

例:
 switch(num){
 case 1:
   System.out.println(“1です。”):
   break;
 default:
   System.out.println(“1以外です。”):
   break;
 }

○ ファイル

次のようにファイルを作成してください。

ファイル名 SwitchTest.java

サンプルダウンロード

○ プログラム

次のようにプログラムを入力してください。

SwitchTest.java

  1. import java.io.*;
  2. class SwitchTest{
  3.     public static void main(String[] args) throws Exception{
  4.         //データを入力する準備をする
  5.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  6.         //データを入力する
  7.         System.out.print("「平日」か「休日」を入力してください:");
  8.         String str = br.readLine();
  9.         //入力データによって処理を分岐する
  10.         switch(str){
  11.         case "平日":        //平日の場合
  12.             System.out.println("今日は仕事があります。");
  13.             break;
  14.         case "休日":        //休日の場合
  15.             System.out.println("今日は遊びに行きましょう。");
  16.             break;
  17.         default:            //その他の場合
  18.             System.out.println("今日は家でおとなしくしていましょう。");
  19.             break;
  20.         }
  21.     }
  22. }

○ コンパイルと実行

C:¥work>javac SwitchTest.java
C:¥work>java SwitchTest
「平日」か「休日」を入力してください:平日
今日は仕事があります。

C:¥work>java SwitchTest
「平日」か「休日」を入力してください:休日
今日は遊びに行きましょう。

C:¥work>java SwitchTest
「平日」か「休日」を入力してください:その他
今日は家でおとなしくしていましょう。

C:¥work>

○ フローチャート

switch文フローチャート

○ 解説

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のプログラムへと、次々と実行されるので注意してください。

前へ   次へ