java创建MyDate类用来计算天数 成员变量:年year,月month,日day,并创建构造方法 成员方法:通过leap()方法判断当前日期是否为闰年,通过days()方法计算该日期是该年的第几天,如果输入不合理的年月日,则返回-1 补充以下类代码,测试以下测试用例
时间: 2024-05-03 11:22:01 浏览: 156
MyDate类代码:
```
public class MyDate {
private int year;
private int month;
private int day;
public MyDate(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}
public boolean leap() {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
return true;
} else {
return false;
}
}
public int days() {
int[] daysInMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int days = 0;
if (leap()) {
daysInMonth[1] = 29;
}
if (month < 1 || month > 12 || day < 1 || day > daysInMonth[month - 1]) {
return -1;
}
for (int i = 0; i < month - 1; i++) {
days += daysInMonth[i];
}
days += day;
return days;
}
}
```
测试用例代码:
```
public class TestMyDate {
public static void main(String[] args) {
MyDate date1 = new MyDate(2021, 5, 3);
System.out.println("date1是否为闰年:" + date1.leap());
System.out.println("date1是今年的第" + date1.days() + "天");
MyDate date2 = new MyDate(2000, 2, 29);
System.out.println("date2是否为闰年:" + date2.leap());
System.out.println("date2是今年的第" + date2.days() + "天");
MyDate date3 = new MyDate(2021, 2, 29);
System.out.println("date3是否为闰年:" + date3.leap());
System.out.println("date3是今年的第" + date3.days() + "天");
MyDate date4 = new MyDate(2021, 13, 1);
System.out.println("date4是否为闰年:" + date4.leap());
System.out.println("date4是今年的第" + date4.days() + "天");
MyDate date5 = new MyDate(2021, 2, 30);
System.out.println("date5是否为闰年:" + date5.leap());
System.out.println("date5是今年的第" + date5.days() + "天");
MyDate date6 = new MyDate(2000, 12, 31);
System.out.println("date6是否为闰年:" + date6.leap());
System.out.println("date6是今年的第" + date6.days() + "天");
MyDate date7 = new MyDate(2021, 0, 1);
System.out.println("date7是否为闰年:" + date7.leap());
System.out.println("date7是今年的第" + date7.days() + "天");
MyDate date8 = new MyDate(2021, 1, 0);
System.out.println("date8是否为闰年:" + date8.leap());
System.out.println("date8是今年的第" + date8.days() + "天");
MyDate date9 = new MyDate(2021, 2, -1);
System.out.println("date9是否为闰年:" + date9.leap());
System.out.println("date9是今年的第" + date9.days() + "天");
MyDate date10 = new MyDate(2021, 13, 32);
System.out.println("date10是否为闰年:" + date10.leap());
System.out.println("date10是今年的第" + date10.days() + "天");
}
}
```
测试结果:
```
date1是否为闰年:false
date1是今年的第123天
date2是否为闰年:true
date2是今年的第60天
date3是否为闰年:false
date3是今年的第-1天
date4是否为闰年:false
date4是今年的第-1天
date5是否为闰年:false
date5是今年的第-1天
date6是否为闰年:true
date6是今年的第366天
date7是否为闰年:false
date7是今年的第-1天
date8是否为闰年:false
date8是今年的第-1天
date9是否为闰年:false
date9是今年的第-1天
date10是否为闰年:false
date10是今年的第-1天
```
可以看到,测试用例覆盖了各种可能的输入情况,程序也能够正确地输出结果。
阅读全文