使用变量时,您可以定义或指定该变量为 1-10 等范围内的所有数字吗?我正在使用 Switch 语句,并希望将其中一个 case 变量分配给 100-1000 之间的所有变量,而无需编写 900 个 case 行。
如果要对范围使用
switch
语句,通常需要将范围映射到特定值 - 它们可以是离散整数,但在 Java 中使用 enum
是有意义的,因为 enum
定义可以有一个方法来进行映射。
enum
可以是公共的,但如果您不需要在其他地方使用它们,它们也可以在类中是私有的。
例如:
public class Something {
private static enum RangeType {
LOW(0, 10),
MID(10, 20),
HIGH(20, 30);
private final int lowRange;
private final int highRange;
RangeType(int lowRange, int highRange) {
this.lowRange = lowRange;
this.highRange = highRange;
}
public RangeType getRange(int val) {
for (RangeType rt : RangeType.values()) {
if (rt.lowRange < val && val > rt.highRange) {
return rt;
}
}
return null;
}
}
public int doSomething(int s) {
int newS;
RangeType sRange = RangeType.getRange(s);
switch (sRange) {
case LOW:
newS = 15;
break;
case MID:
newS = 3;
break;
case HIGH:
newS = 9;
break;
default:
newS = 0;
}
return newS;
}
}
使用枚举可能有些过大,但它确实说明了如何完成映射。