enum type {WD, AGGT, ACCT}
public type empType
public void salary(int choice, int hours_Worked)
{
switch(choice)
{
case ?:
case ?:
case ?:
}
}
我不确定在案例中放什么,因为传递给方法的选择是数字的,我发现的大多数例子都是字符串比较..我总是可以强迫案例为1和2但是。 ..这将首先杀死枚举点......
答案 0 :(得分:2)
实际上,该方法应该使用type choice
而不是int choice
作为参数。 (而且,Type
确实应该大写并给出更好的名称。)
您是否在询问如何从序数整数值到枚举值?这不是一个好主意,但如果必须,你可以这样转换:
type valueOf(int ordinal) {
for (type t : type.values()) {
if (t.ordinal() == ordinal) {
return t;
}
}
throw new IllegalArgumentException();
}
......但同样,这是修复糟糕的设计。改变那种方法。
答案 1 :(得分:1)
首先,Java中的枚举以下列方式声明:
public enum EmpType {
WD, AGGT, ACCT
}
按照惯例,枚举名称应为大写。要引用枚举值,只需限定它,例如EmpType.WD
。但是在开关内部,它是推断的,所以你要省略它,例如:
EmpType myEmpType = EmpType.WD;
switch (myEmpType) {
case WD:
break;
default:
}
请注意,变量类型声明为EmpType
,而不是int。看看Java Tutorial。
答案 2 :(得分:0)
该方法应如下所示:
public void salary(Type choice, int hours_Worked)
{
switch(choice)
{
case WD:
case ACCT:
case AGGT:
}
}
因为如果你有一个枚举,你应该使用它,而不是一些匿名的int
如果你真的必须以这种方式转换序数(这是一个实现细节):
Type type = Type..... // WD, ...
int o = type.ordinal();
// reverse mapping: ordinal -> Type
Type type2 = Type.values()[o];