Java中的枚举(enum)是一种存储一组常量值的数据类型。您可以使用枚举来存储固定值,例如一周中的天,一年中的月等。
enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }
您还可以使用自定义值定义一个枚举来声明常量。但是您需要一个实例变量,一个构造函数和一个getter方法来返回值。
switch语句允许针对值列表对变量进行相等性测试。每个值称为一个案例,并针对每种情况检查要打开的变量
switch(expression) { case value : // Statements break; case value : // Statements break; //您可以有任意数量的case语句。 default : // Statements }
通过switch语句,您可以使用int,char或enum类型。任何其他类型的用法都会产生编译时错误。
让我们创建一个包含5个常量的枚举,这些常量代表5个不同scoters的模型,其价格为值,如下所示:
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程序使用切换案例检索所有车辆的价格。
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
我有两种枚举类型(并希望用户能够添加自己的)。 如果我不在接受枚举类型的方法中使用枚举属性,这就很好。 但是,如果我希望模板E被识别为一个枚举(在这里的开关中使用),我会得到错误“不能打开类型E的值”(在Eclipse中,开关(E)中的“E”带有红色下划线) 我对擦除有一点了解,它在编译时擦除了关于模板的所有信息,所以这就是问题所在。但是我尝试传入clazz类或者实现一个接口都没有成功。对此有什么
问题内容: 对于建议抛出异常的人: 抛出异常不会给我编译时错误,而是给我运行时错误。我知道我会抛出异常,我宁愿在编译时死掉,也不愿在运行时死掉。 首先,我正在使用Eclipse 3.4。 我有一个数据模型,它的mode属性是Enum。 我目前正在编写此模型的视图,并且我有代码 我收到一个错误“此方法必须返回类型为java.awt.Color的结果”,因为我没有默认大小写,并且在函数末尾没有返回xx
首先,我要说明我对C#中的枚举更加熟悉,而Java中的枚举似乎是一团糟。 正如您所看到的,我试图在下一个示例中使用switch语句@enums,但无论我在做什么,我总是得到一个错误。 我收到的错误是: 限定的大小写标签必须替换为限定的枚举常量 问题是我很理解这个错误,但我不能只写VALUE_A,因为枚举位于另一个子类中。有没有办法解决这个问题?为什么会发生在Java?
主要内容:基本写法,跨越 case 的 fallthrough——兼容C语言的 case 设计Go语言的 switch 要比C语言的更加通用,表达式不需要为常量,甚至不需要为整数,case 按照从上到下的顺序进行求值,直到找到匹配的项,如果 switch 没有表达式,则对 true 进行匹配,因此,可以将 if else-if else 改写成一个 switch。 相对于C语言和 Java 等其它语言来说,Go语言中的 switch 结构使用上更加灵活,语法设计尽量以使用方便为主。 基本写
Go 语言条件语句 switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上直下逐一测试,直到匹配为止。。 switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加break 语法 Go 编程语言中 switch 语句的语法如下: switch var1 { case val1: ... case val2:
C语言虽然没有限制 if else 能够处理的分支数量,但当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况。例如,输入一个整数,输出该整数对应的星期几的英文表示: 运行结果: Input integer number:3↙ Wednesday 对于这种情况,实际开发中一般使用 switch 语句代替,请看下面的代码: 运行结果: Input integ