我必须用Java创建一个月级

其中一个要求是getMonthName方法,如果月份返回名称,即1月为1.还有一个返回月份名称的字符串(字符串代表),我只是担心有一种更简单的方式来处理我的问题。做比这个:

 import java.util.Scanner; import java.io.*; public class Month { private int monthNum = 0; private String monthName; String monthOne = "JANUARY"; String monthTwo = "FEBRUARY"; String monthThree = "MARCH"; String monthFour = "APRIL"; String monthFive = "MAY"; String monthSix = "JUNE"; String monthSeven = "JULY"; String monthEight = "AUGUST"; String monthNine = "SEPTEMBER"; String monthTen = "OCTOBER"; String monthEleven = "NOVEMBER"; String monthTwelve = "DECEMBER"; //CONSTRUCTORS public Month() { monthNum = 1; } public Month(int monthNum) { this.monthNum = monthNum; if ((monthNum > 12) || (monthNum 12) || (monthNum<1)) { monthNum = 1; } } public int getMonthNumber() { return monthNum; } public String getMonthName() { if (monthNum == 1) { return "January"; } else if (monthNum == 2) { return "February"; } else if (monthNum == 3) { return "March"; } else if (monthNum == 4) { return "April"; } else if (monthNum == 5) { return "May"; } else if (monthNum == 6) { return "June"; } else if (monthNum == 7) { return "July"; } else if (monthNum == 8) { return "August"; } else if (monthNum == 9) { return "September"; } else if (monthNum == 10) { return "October"; } else if (monthNum == 11) { return "November"; } else { return "December"; } } public String toString() { if (monthNum == 1) { return "January"; } else if (monthNum == 2) { return "February"; } else if (monthNum == 3) { return "March"; } else if (monthNum == 4) { return "April"; } else if (monthNum == 5) { return "May"; } else if (monthNum == 6) { return "June"; } else if (monthNum == 7) { return "July"; } else if (monthNum == 8) { return "August"; } else if (monthNum == 9) { return "September"; } else if (monthNum == 10) { return "October"; } else if (monthNum == 11) { return "November"; } else { return "December"; } } } 

我错过了什么,或者这是我这个级别的最佳方式吗?

如果您必须自己实现Month类,那么请查看枚举 ,否则请查看java.time.Month的文档 – 尝试这样的事情……

 import java.time.Month; public Month getMonthName( int monthNum ) { return Month.of( monthNum ); } 

或者只是……

 System.out.println( Month.of( monthNumber ) ); 

以下是一些改进课程的建议:

  1. 使用KeyValuePair(例如, map )来存储月份列表,因为它很容易维护和检索信息。

  2. 如果使用keyValuePair集合,则可以直接使用id访问月份,而不是使用嵌套的if语句。(正如您在getMonthName()和toString()方法中所做的那样)

您可以使用的另一种方法是HashMap,其中key是月份的数字,值是其名称。 使用HashMap,您还可以根据值获取密钥,反之亦然,这似乎是您想要做的。 还要尽量避免使用其他ifs。 您可以改用开关

这很简单

 class Month { private static String monthNames[] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; private int monthNumber; public Month(int n) { if (n < 1 || n > 12) { monthNumber = 1; } else { monthNumber = n; } } public String getMonthName() { return monthNumber[monthNumber - 1]; } @Override public String toString() { return getMonthName(); } }