こんにちは。ハンドルネーム「Javaを復習する初心者」です。このサイトはプログラミング言語Javaの復習・学習をするブログです。プログラムの開発・実行はEclipseで行ってます。
スポンサーリンク
お知らせ
  • 参考文献のページ作りました。
  • Amazon.co.jpアソシエイトに参加していますが、参考文献の紹介はもしもアフィリエイトに統一しました。
  • 2016年10月9日からは投稿ペースを落とします。週1回くらいにする予定です。
スポンサーリンク

switch文

こんにちは。「Javaを復習する初心者」です。今回ははswitch文を扱いました。

switch文もif文同様に分岐処理で使います。if else文で条件が「==」のみである場合、switch文を使うと見やすい場合があります。今回は整数値で分岐することにします。

プログラム

以下にフローを書きます。分岐処理をそれぞれの実行結果を見るため、繰り返し処理の中で分岐処理をする例にしました。

  1. 繰り返しカウンタ1が1から9まで以下を繰り返す。
    1. 文字列型変数sを以下の値で初期化する。
      [繰り返しカウンタ1] + “回目 ”

    2. 繰り返しカウンタ1の値で以下のようにsの末尾に文字列を追加する。
      iの値 追加する文字列
      5 当たり
      4,6 近い
      3,7 まあまあ近い
      上記以外 遠い
  2. 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型が新たに生成される」です。