Java switch文 条件分岐を行うサンプル

目次

switch文とは

switch文の構造とサンプル

複数の条件で処理を分岐する時に使用します。
if文で複数の条件を書くよりも見やすくなります。

switch(式){
  case 値 :
    処理
    break;
  case 値 :
    処理
    break;
  default:
    処理
}

コード

public class Test1 {
	public static void main(String[] args) {
		String a = "2";

		switch (a) {
		case "1":
			System.out.println("one");
			break;
		case "2":
			System.out.println("two"); // two
			break;
		default:
			System.out.println("other");
		}
	}
}

5行目は、aの値が2なので9行目のcaseに進みます。
9行目は、aの値が2なので10行目の処理を行います。
11行目は、breakがあるのでswitch文の処理は終了し15行目に進みます。

point

・式の結果とcaseの値が一致すれば、配下の処理が実行されます。
・caseは複数記述できます。
・breakでswitch文を抜けます。breakがないと下の判定(case/default)に行ってしまいます(フォールスルー)。
・defaultは、条件の値がどのcaseの値にも一致しない時に実行されます。省略可能ですが書いたほうが良いです。
・JavaSE7以降であればswitch文で文字列の判定もできます。
ただし、値がnullの場合、NullPointerException例外が発生するので判定をする際は、switch文の前に値がnullでないことを確認したほうがよいです(nullをチェック)。

 

nullをチェックするサンプル

  String a = null;

  if (a == null) {
    System.out.println("null"); // null

  } else {
    switch (a) {
      case "a":
        System.out.println("one");
        break;
      case "b":
        System.out.println("two");
        break;
      default:
        System.out.println("three");
    }
  }

値がnullでない場合は、6行目のelseからswitch文が実行されます。

point

判定する変数がstring型の場合、NullPointerExceptionの例外が起きる可能性があります。
そのためにswitch文の前でnullをチェックしています。

 

フォールスルー(breakがない場合)

  String a = "1";

  switch (a){
    case "1":
      System.out.println("one"); // one
			
    case "2":
      System.out.println("two"); // two
      break;
    default:
      System.out.println("other");
  }

6行目は、breakがありません。
5行目のcase "1"の処理の後、7行目のcase"2"の処理も実行されます。

point

フォールスルー(fall through/落ちる)と呼ばれます。
breakを書き忘れたのかわかりづらいので使用しないほうが良いです。

 

switch文の中でif文を使用する

  int a = 3;

  switch (a){
    case 3:
      if (a % 2 == 0) {
        System.out.println("even");
      } else {
        System.out.println("odd"); // oddが出力される
      }
        break;
    default:
      System.out.println("other");
  }

5行目はswitch文の中のcaseの後にif文を使用しています。
%は、割り算の余りを求めます。

point

switch文の中でif文を使用できます。

 

enumで判定するサンプル

enum Color {
    RED,
    YELLOW,
    BLUE
}
public class Test1 {
	public static void main(String[] args) {
		Color color = Color.YELLOW;

		switch (color) {
		case RED:
			System.out.println("red");
			break;
		case YELLOW:
			System.out.println("yellow"); // yellow
			break;
		case BLUE:
			System.out.println("blue");
			break;
		default:
			System.out.println("other");
		}
	}
}

1-5行目は、enumです。
8行目で値を取得し10行目から判定しています。

point

enumの判定でswitch文はよく使われます。

関連の記事

Java if文 条件分岐を行うサンプル
Java for文 処理を繰り返す(break/continue)

△上に戻る