すずろぐ

人生大逆転を目指す、鈴木俊吾の成長日記

スポンサーリンク

Java入門 第5回 switch文を使った条件分岐

プログラミング

おはようございます、すずしんです。

今回の記事では、Java入門の第5回という事で、switch文を使った条件分岐を扱います。

はじめに

ある変数の値を複数の値と比較して、その値に応じて処理を変える場合を考えます。 if文を使って書くと以下のような感じですね。

int n = 2;
if(n == 1) {
    System.out.println("非常に不満");
} else if(n == 2) {
    System.out.println("不満");
} else if(n == 3) {
    System.out.println("普通");
} else if(n == 4) {
    System.out.println("満足");
} else if(n == 5) {
    System.out.println("非常に満足");
}

このような場合、if文を使っても書くことはできますが…。 対象となる値に応じて処理を変える時には、switch文を使って記述することができます。

switch文

switch文のフォーマットは以下のような感じです。

switch(評価式) {
case 値1:
    値1の時の処理;
    break;
case 値2:
    値2の時の処理;
    break;
case 値3:
    値3の時の処理;
    break;
case 値4:
    値4の時の処理;
    break;
default:
    その他の時の処理;
    break;
}

評価式を評価した結果、値1になれば値1の時の処理を行います。 値2になれば、値2の時の処理を行います。 以下同様ですね。 defaultというのは、その他の場合の時の処理を記述します。 この例の場合には、値1,2,3,4でない場合を指します。

先ほどif文で書いた条件分岐をswitch文で書くと以下のようになります。 この場合、nが2なので、case 2の時が該当するため「不満」が表示されます。

int n = 2;
switch(n) {
case 1:
    System.out.println("非常に不満");
    break;
case 2:
    System.out.println("不満");
    break;
case 3:
    System.out.println("普通");
    break;
case 4:
    System.out.println("満足");
    break;
case 5:
    System.out.println("非常に満足");
    break;
}

if文とswitch文の違いは、if文は評価式がtrueまたはfalseになるのに対して、switch文は変数の値そのものを対象とします。 変数の値を元にして条件分岐をしたい時にはswitch文を使うと良いでしょう。

switch文で使える変数の型

switch文の評価式に使える変数の型は、以下の6種類のみです。 基本型がすべて使えるわけではないので注意してください。

・char ・byte ・short ・int ・enum ・String

そして、switch文の評価式の型と、case文の式の型が一致していないといけません。 例えば、String型の変数を使ったswitch文を書くときには、case文の値の型はString型でないとダメだということです。 つまり、以下のような書き方はエラーになりますので注意してください。

String str = "2";
switch(str) {
case "1": // OK
    System.out.println("strは1です");
    break;
case 2: // NG 正しくは"2"
    System.out.println("strは2です");
    break;
default: // OK
    System.out.println("strは1でも2でもありません");
    break;
}

サンプルプログラム

それでは、ここまでを踏まえてサンプルプログラムを作成してみます。 このサンプルプログラムは、nを5で割るとどうなるかを表示するプログラムです。 nを5で割った余りに応じて、表示する文字列を変えています。

public class Switch {
    public static void main(String[] args) {
        int n = 9;
        switch(n % 5) {
            case 0:
                System.out.println(n + "は5で割り切れます。");
                break;
            case 1:
                System.out.println(n + "は5で割ると1余ります。");
                break;
            case 2:
                System.out.println(n + "は5で割ると2余ります。");
                break;
            case 3:
                System.out.println(n + "は5で割ると3余ります。");
                break;
            default:
                System.out.println(n + "は5で割ると4余ります。");
                break;
        }
    }
}

実行結果は以下のようになりますね。 nの値を色々と変えて実行してみましょう。

9は5で割ると4余ります。

ひとこと

今回の記事では、switch文を使った条件分岐を扱ってみました。 if文が理解できれば、switch文もそれほど難しくはありませんよね?

次回は、for文を使った繰り返しを扱ってみます。 繰り返しができるようになると、プログラミングの幅がさらに広がりますよ。 ぜひ楽しみにしていてくださいね。

関連記事

Java入門 第4回 if, else, else if文を使った条件分岐Java入門 アーカイブ