如果月份和日期不是2015年的有效日期,我必须抛出IllegalArgumentException
。返回格式为月/日/年的日期,例如2015年12月9日,发生在3天后2015年给定的月份和日期
public static String getReturnDate(int month, int day) throws IllegalArgumentException {
int year = 2015;
String s4 = (month + "/" + day + "/" + year);
String s5 = ("Invalid response");
String s6 = ("None");
if ((month < 1 || month > 12) && (day < 1 || day > 31)) {
return s5;
}
if ((month == 4 || month == 6 || month == 9 || month == 11) && (day > 30)) {
return s5;
}
if((month == 1 || month == 2 || month ==3 || month ==5 || month == 7 || month == 8 || month == 10 || month == 12) && (day > 31)) {
return s5;
}
if ((month == 2) && (day > 28)) {
return s5;
}
else if((month >= 1 || month <= 12) && (day >= 1 || day <= 31)) {
return s4;
}
if ((month == 4 || month == 6 || month == 9 || month == 11) && (day <= 30)) {
return s4;
}
if((month == 1 || month == 2 || month ==3 || month ==5 || month == 7 || month == 8 || month == 10 || month == 12) && (day <= 31)) {
return s4;
}
if ((month == 2) && (day < 28)) {
return s4;
}
return s4 + 3;
}
答案 0 :(得分:1)
Calendar cal = Calendar.getInstance();
在cal对象中设置日期。然后使用以下代码行。
Calendar.add(Calendar.DAY, 3);
你可以使用
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
String dateString = dateFormat.format(cal);
以所需格式获取日期,而不是连接字符串。
答案 1 :(得分:0)
不是返回错误,而是抛出异常,例如
if ((month < 1 || month > 12){
throw new IllegalArgumentException("Bad month");
}
以下部分是多余的,因为您已在本月检查了超过31天
if((month == 1 || month == 2 || month ==3 || month ==5 || month == 7 || month == 8 || month == 10 || month == 12) && (day > 31)) {
return s5;
}
此行终止您的方法,因为您已检查无效日期
else if((month >= 1 || month <= 12) && (day >= 1 || day <= 31)) {
return s4;
}
相反,此时,您应该在该日期添加三天,并在必要时更新月份和年份。
我认为这应该是对您的编程技能的测试,而不是您对Java API的了解,因此您希望数组存储月中的天数,例如
int days[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
然后检查day + 3
是否仍在同一个月,请使用
day += 3;
while (day > days[month]) {
day -= days[month];
month++;
}
同样检查年份是否已经改变。 while
循环是推广代码以处理大于3的增量的开始。
然后返回并使用该数组来简化错误检查。
答案 2 :(得分:0)
public static String getReturnDate(int month, int day) throws IllegalArgumentException {
int year = 2015;
Calendar cal = Calendar.getInstance();
Calendar.add(Calendar.DAY, 3);
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
String dateString = dateFormat.format(cal);
String s4 = (month + "/" + day + "/" + year);
if ((month < 1 || month > 12) && (day < 1 || day > 31)) {
throw new IllegalArgumentException("Invalid response");
}
int days[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
day = day + 3;
if (day > days[month]) {
month++;
}
if (day > day[year]) {
year++;
}
}