输入:三个变量month、day和year 输出:输入日期后一天的日期,例如:输入为1986年6月9日,则该函数的输出应为1986年6月10日。输入的日期可以有一定的范围要求,比如从1000到3000年。 使用黑盒测试方法中的因果分析法,给出因果图,并且生成测试用例,并进行java上机测试。
时间: 2023-05-28 11:08:17 浏览: 119
因果图如下:
![因果图](https://i.imgur.com/NJvV8Gy.png)
生成的测试用例如下:
|month|day|year|预期输出|
|---|---|---|---|
|2|28|2020|2/29/2020|
|2|28|2019|3/1/2019|
|4|30|2020|5/1/2020|
|12|31|2020|1/1/2021|
|2|29|2020|3/1/2020|
|4|31|2020|Invalid date|
|13|1|2020|Invalid date|
|2|30|2020|Invalid date|
|6|31|2020|Invalid date|
|2|29|1900|Invalid date|
|2|30|2019|Invalid date|
Java代码如下:
```java
public class NextDay {
public static String getNextDay(int month, int day, int year) {
int[] daysInMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (year < 1000 || year > 3000 || month < 1 || month > 12 || day < 1 || day > 31) {
return "Invalid date";
}
if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) {
daysInMonth[1] = 29;
}
if (day > daysInMonth[month - 1]) {
return "Invalid date";
}
if (day == daysInMonth[month - 1]) {
if (month == 12) {
return "1/1/" + (year + 1);
} else {
return (month + 1) + "/1/" + year;
}
} else {
return month + "/" + (day + 1) + "/" + year;
}
}
public static void main(String[] args) {
System.out.println(getNextDay(2, 28, 2020)); //2/29/2020
System.out.println(getNextDay(2, 28, 2019)); //3/1/2019
System.out.println(getNextDay(4, 30, 2020)); //5/1/2020
System.out.println(getNextDay(12, 31, 2020)); //1/1/2021
System.out.println(getNextDay(2, 29, 2020)); //3/1/2020
System.out.println(getNextDay(4, 31, 2020)); //Invalid date
System.out.println(getNextDay(13, 1, 2020)); //Invalid date
System.out.println(getNextDay(2, 30, 2020)); //Invalid date
System.out.println(getNextDay(6, 31, 2020)); //Invalid date
System.out.println(getNextDay(2, 29, 1900)); //Invalid date
System.out.println(getNextDay(2, 30, 2019)); //Invalid date
}
}
```
阅读全文