【问题标题】:Syntax with Java on Enumerators枚举器上的 Java 语法
【发布时间】:2017-04-28 09:31:55
【问题描述】:

这是给出的问题:

这是我的尝试:

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;
}
}

这是我的错误信息:

由于网站的工作方式,我们被告知不要在类声明中添加第一个“public”。

我对枚举器背后的语法不是很熟悉(而且我对 java 也很陌生),所以我不完全确定我做错了什么。任何帮助将不胜感激。

【问题讨论】:

    标签: java syntax enums enumerators


    【解决方案1】:

    您在此方法 setFrequency 中忘记了类型 Frequency

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

    一定是:

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

    【讨论】:

    • 啊是的,我忘记了类型,我也不知道使用“this.frequency = freq;”这是我更新的错误:image here 我将编辑我的问题以更新它。
    • 在你的代码中你也可以使用:frequency = freq;
    【解决方案2】:

    您还需要从任何给定的字符串构建枚举。请参阅内部枚举类 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());
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多