这是给出的问题:
这是我的尝试:
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也很新)所以我不完全确定我做错了什么。任何帮助将不胜感激。
答案 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());
}
}