枚举器上的Java语法

时间:2017-04-28 09:31:55

标签: java syntax enums enumerators

这是给出的问题:

This is the question given

这是我的尝试:

class SerialPublication {

public enum Frequency {DAILY, WEEKLY, MONTHLY, QUARTERLY, YEARLY, UNDEFINED}

protected Frequency frequency;

public SerialPublication(){
frequency = Frequency.UNDEFINED;
}

public SerialPublication(String freq){
setFrequency(freq);
}

public void setFrequency(Frequency freq){
this.frequency = freq;
}

public Frequency getFrequency(){
return frequency;
}
}

这是我的错误消息: error message

我们被告知不要添加第一个" public"因为网站的运作方式,在课堂申报中。

我对调查员背后的语法不是很熟悉(而且我对java也很新)所以我不完全确定我做错了什么。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

您忘记了此方法中频率的类型 setFrequency

public void setFrequency(freq){
    frequency = Frequency.freq;
}

必须是:

public void setFrequency( Frequency freq){
    this.frequency = freq;
}

答案 1 :(得分:1)

您还需要从任何给定的String构建枚举。请参阅内部枚举类fromString(String aFrequency)。作为奖励,例如,您还可以向枚举添加额外信息。

 public class SerialPublication {

    public enum Frequency {
        //Can add extra information to enums
        DAILY("Daily"),
        WEEKLY("Weekly"),
        MONTHLY("Monthly"),
        QUARTERLY("Quarterly"),
        YEARLY("Yearly"),
        UNDEFINED("Undefined");

        private final String frequency;

        Frequency(String frequency) {
            this.frequency = frequency;
        }

        public String getFrequency() {
            return frequency;
        }

        /**
         * Builds an enum from a given frequency string
         * @param aFrequency
         * @return
         */
        public static Frequency fromString(String aFrequency) {
            for (Frequency frequency : Frequency.values()) {
                if(frequency.getFrequency().toLowerCase().equals(aFrequency.toLowerCase())) {
                    return frequency;
                }
            }
            return Frequency.UNDEFINED; //Could send null back
        }
    }

    private Frequency frequency;

    public SerialPublication(){
        frequency = Frequency.UNDEFINED;
    }

    public SerialPublication(String freq){
        this.setFrequency(freq);
    }

    /**
     * Sets the frequence based on a String. This handles invalid input by assuming nonsense equals undefined
     * @param frequency
     */
    public void setFrequency(String frequency){
        this.setFrequency(Frequency.fromString(frequency));
    }

    /**
     * Sets the frequency based on the Frequency Enum.
     * @param frequency
     */
    public void setFrequency(Frequency frequency) {
        this.frequency = frequency;
    }

    public Frequency getFrequency(){
        return frequency;
    }

    public static void main(String[] args) {
        SerialPublication publication = new SerialPublication();
        System.out.println(publication.getFrequency());
        publication.setFrequency("monthly");
        System.out.println(publication.getFrequency());
        publication.setFrequency(Frequency.QUARTERLY);
        System.out.println(publication.getFrequency());
        publication.setFrequency("cows are great");
        System.out.println(publication.getFrequency());
    }
}