在枚举器上使用 Java 的语法
Syntax with Java on Enumerators
这是给出的问题:
这是我的尝试:
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;
}
}
这是我的错误信息:
由于网站的运作方式,我们被告知不要在 class 声明中添加第一个 "public"。
我不是很熟悉枚举器背后的语法(而且我对 java 也很陌生)所以我不完全确定我做错了什么。任何帮助将不胜感激。
您忘记了此方法 setFrequency 中的类型 Frequency:
public void setFrequency(freq){
frequency = Frequency.freq;
}
必须是:
public void setFrequency( Frequency freq){
this.frequency = freq;
}
您还需要从任何给定的字符串构建枚举。请参阅内部枚举 class 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());
}
}
这是给出的问题:
这是我的尝试:
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;
}
}
这是我的错误信息:
由于网站的运作方式,我们被告知不要在 class 声明中添加第一个 "public"。
我不是很熟悉枚举器背后的语法(而且我对 java 也很陌生)所以我不完全确定我做错了什么。任何帮助将不胜感激。
您忘记了此方法 setFrequency 中的类型 Frequency:
public void setFrequency(freq){
frequency = Frequency.freq;
}
必须是:
public void setFrequency( Frequency freq){
this.frequency = freq;
}
您还需要从任何给定的字符串构建枚举。请参阅内部枚举 class 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());
}
}