Java 中枚举的 switch 语句可以用于枚举吗?

java 8object oriented programmingprogramming

Java 中的枚举 (enum) 是一种存储一组常量值的数据类型。您可以使用枚举来存储固定值,例如一周中的天数、一年中的月份等。

枚举天数 {
   SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}

您还可以定义一个枚举,将自定义值赋给声明的常量。但您需要有一个实例变量、一个构造函数和一个 getter 方法来返回值。

使用带有 switch 的枚举

switch 语句允许测试变量是否与值列表相等。每个值称为一个案例,并且针对每个案例检查被打开的变量

语法

switch(expression) {
   case value :
      // 语句
      break;
   case value :
      // 语句
      break;
      // 您可以有任意数量的 case 语句。
   default :
      // 语句
}

使用 switch 语句,您可以使用 int、char 或枚举类型。使用任何其他类型都会产生编译时错误。

示例

让我们创建一个枚举,其中包含 5 个常量,代表 5 种不同苏格兰黑豹的型号,其价格为值,如下所示 −

enum Scoters {
   //带值的常量
   ACTIVA125(80000), ACTIVA5G(70000), ACCESS125(75000), VESPA(90000), TVSJUPITER(75000);
   //实例变量
   private int price;
   //用于初始化实例变量的构造函数
   Scoters(int price) {
      this.price = price;
   }
   //显示价格的静态方法
   public static void getPrice(int model){
      Scoters constants[] = Scoters.values();
      System.out.println("Price of: "+constants[model]+" is "+constants[model].price);
   }
}

以下 Java 程序使用 switch case 检索所有车辆的价格。

public class EnumExample {
   Scoters sc;
   public EnumExample(Scoters sc) {
      this.sc = sc;
   }
   public void displayPrice() {
      switch (sc) {
         case Activa125:
            Scoters.getPrice(0);
            break;
         case Activa5G:
            Scoters.getPrice(1);
            break;
         case Access125:
            Scoters.getPrice(2);
            break;
         case Vespa:
            Scoters.getPrice(3);
            break;
         case TVSJupiter:
            Scoters.getPrice(4);
            break;
         default:
            System.out.println("Model not found");
            break;
      }
   }
   public static void main(String args[]) {
      EnumExample activa125 = new EnumExample(Scoters.ACTIVA125);
      activa125.displayPrice();
      EnumExample activa5G = new EnumExample(Scoters.ACTIVA5G);
      activa5G.displayPrice();
      EnumExample access125 = new EnumExample(Scoters.ACCESS125);
      access125.displayPrice();
      EnumExample vespa = new EnumExample(Scoters.VESPA);
      vespa.displayPrice();
      EnumExample tvsJupiter = new EnumExample(Scoters.TVSJUPITER);
      tvsJupiter.displayPrice();
   }
}

输出

Price of: ACTIVA125 is 80000
Price of: ACTIVA5G is 70000
Price of: ACCESS125 is 75000
Price of: VESPA is 90000
Price of: TVSJUPITER is 75000

相关文章