有人可以回答以下问题吗?
我可以使用逻辑运算符而不是枚举值吗? 例如:
enum Days {
MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6), SUNDAY(7)
}
现在可以使用if(Days.SUNDAY > Days.MONDAY)
....?
是否有任何进程可以为枚举指定一系列值?
例如,我想指定考试的有效数字应该在1到100之间。
所以,如果我想声明一个枚举,那么就像这样 - >
enum Validno{ONE(1),TWO(2),....,HUNDRED(100)}
现在是否有任何选项可以声明包含每个值的枚举,并将它们指定为范围而不是单独声明每个值?
答案 0 :(得分:1)
对于#1,您可以使用如下的序数方法
enum Day {
MON, TUE, WED, THU, FRI, SAT, SUN
}
public class EnumExample {
public static void main(String[] args) {
System.out.println(Day.MON.ordinal() < Day.TUE.ordinal()); // Prints true
System.out.println(Day.MON.ordinal() > Day.TUE.ordinal()); // Prints false
}
}
#p>#2:为什么要使用枚举?你可以简单比较一下。
例如:
if(marks > 0 && marks < 100)
答案 1 :(得分:1)
对于#1,是的,可以使用compareTo
方法。
你可以这样做:
enum Days {
Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
}
public static void main(String[] args) {
System.out.println(Days.Monday.compareTo(Days.Sunday)); // Returns negative value
System.out.println(Days.Thursday.compareTo(Days.Tuesday)); // Returns positive value
System.out.println(Days.Tuesday.compareTo(Days.Tuesday)); // Returns zero
}
对于#2, 我不认为这是一种以编程方式声明枚举的方法。如果你想使用枚举,你必须列出一个到百倍。
相反,为什么不宣布一个检查给定分数是否有效的函数? 它可能是这样的:
public boolean isValid(int score){
return score>=0 && score<=100;
}
答案 2 :(得分:1)
作为第二个问题的替代方案,您可以简单地使用常规课程:
public final class Score implements Comparable<Score> {
private final int value;
public Score(int value) {
if (value < 0 || value > 100) {
throw new IllegalArgumentException("score value must be between 0 and 100");
}
this.value = value;
}
public int getValue() {
return value;
}
// equals, hashCode and compareTo omitted, but should be there
}
这为您提供了枚举的类型安全性,而无需单独声明每个101值。没有人能够创建一个价值不正确的分数。