HOWTO · Java

Java で 1 つの switch case ステートメントに複数の値を使用する方法

この記事では、1つの switch case ステートメントに複数の値を使用する方法を学習します。

このページの内容

Java プログラミングにおいて、switch ステートメントは複数の条件を管理するための多用途なツールです。しかし、従来の実装では、複数の値に対して同じコードを処理する際に冗長になることがよくあります。

この記事では、この課題に対処するための 2 つの方法を検討します。まず、Multiple Case Labels メソッドは、個別のコードブロックを使わずに値をグループ化することで、意思決定を効率化します。

次に、Java 14 で導入された Arrow Syntax メソッドは、簡潔な代替手段を提供します。これらの手法は、特に曜日を分類するようなシナリオを扱う場合に、コードの明確さと効率を高めます。これらのメソッドについて詳しく見ていき、コードを簡素化して読みやすさを向上させましょう。

1 つの switch-case ステートメントに 2 つ以上の値を使用する

複数のケースラベルを使用する方法は、この課題に対するエレガントな解決策を提供します。このセクションでは、この方法が switch ステートメント内で複数の値を処理することで、コードの明確さと効率をどのように向上させるかを検討します。

曜日をその位置に基づいて分類したいシナリオを想像してみてください。コードブロックを重複させることなく、この方法を使ってこれを実現しましょう。

public class DayOfWeekClassifier {
  public static void main(String[] args) {
    int day = 4; // Assume 1 represents Monday, 7 represents Sunday

    switch (day) {
      case 1:
      case 2:
      case 3:
      case 4:
      case 5:
        System.out.println("Weekday");
        break;
      case 6:
      case 7:
        System.out.println("Weekend");
        break;
      default:
        System.out.println("Invalid day");
    }
  }
}

4 の値で day という名前の int 変数を初期化します。続く switch ステートメントは day の値を評価します。

ケース 1、2、3、4、5 は、個別のコードブロックなしで順番にリストされます。変数 day がこれらのケースのいずれかと一致すると、ケースの直後に続くコードブロックが実行されます。

これらのケースの間には明示的な break ステートメントは必要なく、制御が共通のコードブロックまで流れることに注意してください。

平日のケースに続く共通のコードブロックには、day が平日を表すときに実行されるロジックが含まれています。break ステートメントがないことで、この共通コードブロックへの流れが促進され、冗長性が最小限に抑えられ、コードの構成が改善されます。

続いて、ケース 6 と 7 が一緒にリストされ、それぞれ独自のコードブロックを持ち、day が週末を表すときの動作を指定します。

オプションの default ケースはキャッチオールとして機能し、指定されたケースのいずれも変数の値と一致しない場合にそのコードブロックを実行します。

出力:

Weekday

矢印構文を使用して、1 つの switch-case ステートメントに複数の値を使用する

Java 14 では、switch-case ステートメントの新しい構文が導入されています。ユーザーはカンマで区切ることで単一の case に複数の値を追加でき、ユーザーは実行コードを中かっこで囲む必要があります。

このセクションでは、矢印構文の重要性を検討し、それがコードをどのように簡素化し、より読みやすく効率的にするかを示します。

曜日をその位置に基づいて分類したい状況を考えてみてください。矢印構文の方法を使えば、これを簡潔に実現できます。

public class DayOfWeekClassifier {
  public static void main(String[] args) {
    int day = 4; // Assume 1 represents Monday, 7 represents Sunday

    switch (day) {
            case 1, 2, 3, 4, 5 -> System.out.println("Weekday");
            case 6, 7 -> System.out.println("Weekend");
            default -> System.out.println("Invalid day");
        }
    }
}

4 の値で day という名前の int 変数を初期化します。続く switch ステートメントは day の値を評価します。

最初の case 行は矢印構文を使用して、値 1、2、3、4、5 をグループ化します。これにより、冗長なコードブロックが不要になり、矢印(->)がこの値のグループを後続のコードブロックに簡潔に関連付けます。

同様に、2 番目の case 行は矢印構文を使用して値 6 と 7 をグループ化し、1 行で複数の値を処理するクリーンで表現力豊かな方法を提供します。

default ケースはキャッチオールとして機能し、指定されたケースのいずれも変数の値と一致しない場合にそのコードブロックを実行します。

出力:

Weekday

結論

switch ステートメント内で複数の値を処理する方法は進化してきました。Multiple Case Labels と Arrow Syntax の方法はエレガントな解決策を提供し、冗長性を減らしてコードの読みやすさを高めます。

最初の方法は、個別のブロックなしでケースをグループ化し、シームレスな制御フローを可能にします。一方、2 番目の方法の矢印構文は、複数の値を 1 行に凝縮し、クリーンで表現力豊かな代替手段を提供します。

意思決定の効率化でも、最新の構文の採用でも、これらの方法はよりクリーンで効率的なコードに貢献します。Java の複雑さを理解していく中で、より効率的な開発体験のためにこれらの手法を取り入れることを検討してください。