簡體   English   中英

成績的Java枚舉

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM