等级的Java枚举
大家好, 我有一个任务要写一个Java枚举,它表示字母等级a到F 如果一切正常,我使用以下代码:等级的Java枚举,java,enums,Java,Enums,大家好, 我有一个任务要写一个Java枚举,它表示字母等级a到F 如果一切正常,我使用以下代码: A(true), B(true), C(true), D(true), E(true), F(false); 布尔值指示学生是通过还是失败 问题是我们需要包括加分和减分。但我不知道如何组织它…A+等不起作用 任何建议或帮助都将不胜感激。А+不起作用,因为+是Java中的操作员 最好再加几个等级,比如: A_PLUS(true), A_MINUS(true), .... , F_PLUS(fals
A(true), B(true), C(true), D(true), E(true), F(false);
布尔值指示学生是通过还是失败
问题是我们需要包括加分和减分。但我不知道如何组织它…A+等不起作用
任何建议或帮助都将不胜感激。
А+
不起作用,因为+
是Java中的操作员
最好再加几个等级,比如:
A_PLUS(true), A_MINUS(true), .... , F_PLUS(false);
正如Kocko所回答的,您不能使用
A++
,因为++
是java中的运算符,但您可以重写toString()
方法,以便为枚举类型提供一些有意义的表示
如果需要,可以使用
toString
方法为enuma_PLUS
使用类似a+
的字符串表示。了解有关的更多信息您将使用枚举模式。它也适用于普通类,Java枚举只是一个示例
首先是类解决方案,因此您可以对其进行比较
public class Grade {
final public static Grade A = new Grade(true, "A");
final public static Grade A_PLUS = new Grade(true, "A+");
final public static Grade A_MINUS = new Grade(true, "A-");
...
final public static Grade E = new Grade(true, "E");
final public static Grade F = new Grade(false, "F");
final private boolean passed;
final private String name;
// private constructor - no-one can create any other instance then those above
private Grade(boolean passed, String name) {
this.passed = passed;
this.name = name;
}
public boolean hasPassed() {
return this.passed;
}
@Override
public String toString() {
return this.name;
}
}
然后比较枚举解决方案。您应该了解设计模式。枚举只是更方便的语法+更可靠的可序列化性,仅此而已
public enum Grade {
A(true),
A_PLUS(true),
A_MINUS(true),
B(true),
B_PLUS(true),
...
E(true),
F(false);
final private boolean passed;
private Grade(boolean passed) {
this.passed = passed;
}
public boolean hasPassed() {
return this.passed;
}
// Thanks to special bonus functionality of enums, which are aware of their name
@Override
public String toString() {
final String name = name();
if (name.contains("PLUS")) {
return name.charAt(0) + "+";
}
else if (name.contains("MINUS")) {
return name.charAt(0) + "-";
}
else {
return name;
}
}
}
我们试着使用下面的类 注:这是访问成绩的简单方法
public class Grade {
private Long id;
// this will be the upper case store and read
private String grade;
}
A+等不起作用。它到底是如何不起作用的?为什么需要为每个等级提供一个布尔值?我的意思是,分数将与一个学生相关联,例如,班级学生将有一个类型为a或B的属性。如果你理解我,那么a的属性不会是假的,B的属性不会是真的!请查看下面我的解决方案,并对所使用的模式进行更多解释。