こんにちは。「Javaを復習する初心者」です。
今回はswitch文を扱いました。switch文もif文同様に分岐処理で使います。if else文で条件が「==」のみである場合、switch文を使うと見やすい場合があります。今回は整数値で分岐することにします。
ソースと実行結果
以下にフローを書きます。分岐処理をそれぞれの実行結果を見るため、繰り返し処理の中で分岐処理をする例にしました。
- 繰り返しカウンタ1が1から9まで以下を繰り返す。
-
- 文字列型変数sを以下の値で初期化する。
[繰り返しカウンタ1] + “回目 ” - 繰り返しカウンタ1の値で以下のようにsの末尾に文字列を追加する。
iの値 追加する文字列 5 当たり 4,6 近い 3,7 まあまあ近い 上記以外 遠い
- 文字列型変数sを以下の値で初期化する。
- sをprintlnで出力する。
以下はソースと実行結果です。
package test;
public class HelloSwitchInt {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
String s = i + "回目 ";
switch (i) {
case 5:
s += "当たり";
break;
case 3:
case 7:
s += "まあまあ";
case 4:
case 6:
s += "近い";
break;
default:
s += "遠い";
break;
}
System.out.println(s);
}
}
}
1回目 遠い
2回目 遠い
3回目 まあまあ近い
4回目 近い
5回目 当たり
6回目 近い
7回目 まあまあ近い
8回目 遠い
9回目 遠い
解説
switch文の構文は一番単純なものは以下のような形です。
switch (キー) {
case 値:
処理内容;
・
・
・
break;
default:
処理内容;
・
・
・
break;
}
中括弧の中の「case 値:」(とbreak;)は複数書けます。「case 値:」はcaseラベルと呼ばれます。キーはkeyのことですが、ここではint型を使ってます。キーに使える型は他にもありますが、基本はint型です。
switch文の処理ですが、キーと「case 値:」の値が一意している行があれば、その行に処理が移ります。その後、break;まで実行されます。一致する値がない場合はdefaultの行に処理が移ります。(最後の「break;」はなくても大丈夫なのですが、Eclipseのswitch文補完がこのように出力するのであった方が良いのでしょう。)
サンプルではiが3か7の場合の分岐ではbreakは使ってません。17行目でsの末尾に”まあまあ”が追加され、break文がないので、20行目に処理が移り、末尾に”近い”が追加されます。追加する文字列で末尾の”近い”が3,4,6,7で共通しているので上記のようにプログラムを書いてみました。ただし、caseの番号の順序が見づらいので良くない書き方なのかもしれません。
iが3か7の場合、2回「+=」が実行されます。詳細は省きますがこのような文字列結合が複数回になる場合、StringよりStringBuilderを使う方が適切かも知れません。しかし今回はswitch文の説明がメインなのでStringを使ってます。厳密にいうと上記で記載している「末尾に追加されます」は「末尾に追加されたString型が新たに生成される」です。