[英]Java enumeration for grades
美好的一天,我有一個編寫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(false);
正如Kocko回答的那樣,你不能使用A+
因為+
是java中的運算符,但你可以覆蓋toString()
方法,這樣你就可以給枚舉類型提供一些有意義的表示。
如果你想要,你可以使用toString
方法為枚舉A_PLUS
使用像A+
這樣的字符串表示。 了解有關java中枚舉的更多信息
您將使用枚舉模式 。 它也適用於普通類,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;
}
}
然后為了比較enum解決方案 。 你應該了解設計模式 。 Enum只是更方便的語法+更可靠的可串行性,僅此而已。
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.