增加java

时间:2015-03-06 14:52:46

标签: java nested

如果月份和日期不是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;
}

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