スポンサードリンク

【Java】処理分岐 switch構文

条件分岐にはif構文がありますが、似たようなものにswitch構文があります。

switch(スイッチ)は、読んで字のごとく、電気をつけるときに利用するスイッチのような働きがあります

1.switch構文とは?

switch構文とは、「ある変数の値が○○○ならばこの処理を実行。○○○ならばこの処理を実行。・・・」というように処理を分岐させる構文です。

2.switch構文の形

switch構文の基本形は以下です。

switch(変数名){
case 値1: 処理1;
break;
case 値2: 処理2;
break;
case 値3: 処理3;
break;



default: 処理;
break;
}

変数名」のところで処理を分岐させたい変数を指定し、その変数の値が「case ○○○」の○○○と等しければ横の処理が実行されます。そしていずれにも当てはまらなかった場合は、「default: 処理;」の処理が行われます。

つまり、指定した変数の値が、値1ならば処理1を、値2ならば処理2を、値3ならば処理3を・・・・(あとは繰り返し)・・・そして最後にどれも当てはまらないのであればdefaultの処理を行います。

さて、「break;」についてですが、このbreak;があると、直前(上)の処理が実行されるとそれ以降の条件判定を行わなくなります。switch構文は処理分岐を行うので、ある条件に合致したらその他の処理は必要がありませんので、必ず各処理の最後にはbreak;文を書くようにしましょう。

3.サンプルプログラム

1.switch構文の基本

では、実際にswitch構文のサンプルプログラムを見てみたいと思います。

int a = 3;
switch(a){
case 1: System.out.println("aは1です。");
break;
case 2: System.out.println("aは2です。");
break;
case 3: System.out.println("aは3です。");
break;
default: System.out.println("aは1、2、3ではありません。");
break;
}

上のプログラムを見ると、int型の変数「a」には3という数値が代入されています。

なので、このプログラムでは「case 3」の条件判定に合致するので、「System.out.println("aは3です。")」が実行されます。

2.switch構文では複数処理も可能

また、switch構文では以下のように複数処理の実行も可能です。

int a = 3;
switch(a){
case 1: System.out.println(“成績は”);
System.out.println(“1です。”);
break;
case 2: System.out.println(“成績は”);
System.out.println(“2です。”);
break;
case 3: System.out.println(“成績は”);
System.out.println(“3です。”);
break;
default: System.out.println(“どれにも該当しませんでした。”);
break;
}

このプログラムでは、「成績は」「3です。」と出力されます。

3.文字も条件判定できる

また、switch構文は、数値データだけでなく、文字データも扱うことができます。

char c = 'え';
switch(c){
case 'あ': System.out.println(“cは「あ」です。”);
break;
case 'い': System.out.println(“cは「い」です。”);
break;
case 'う': System.out.println(“cは「う」です。”);
break;
default: System.out.println(“cは「あ」「い」「う」ではありません。”);
break;
}

【ポイント】
switch構文が扱えるデータ型はbyte、short、int、charの4つのみです。
long型は使用できません。

3.「break;」の意味

breakという言葉の意味に「遮断する、切断する、打ち壊す」というものがあるように、Javaにおいてbreakは、「処理を終了させる」という意味があります。

では、switch構文においてbreakがどんな働きをしているのか確認してみましょう。

int a = 1;
switch(a){
case 1: System.out.println("aは1です。");
case 2: System.out.println("aは2です。");
case 3: System.out.println("aは3です。");
default: System.out.println("aは1、2、3ではありません。");
}

上のswitchを用いたプログラムでは、break文を削除しました。

この実行結果は、以下です。

aは1です。
aは2です。
aは3です。
aは1、2、3ではありません。

変数「a」の値は1なので、本来であれば「aは1です。」と出力されてswitch文が終了するのですが、その終了を担っているbreak文がないので、最後まで処理が行われます。

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント