定义一个“日期”类,含有“年”“月”“日”3个成员变量,含有以下成员函数。 (1)输入年月日。保证月为1~12,日要符合相应范围。否则报错。 (2)用“年-月-日”的形式打印日期。 (3)用“年/月/日”的形式打印日期。 (4)比较该日期是否在另一个日期的前面。
时间: 2024-10-25 18:16:17 浏览: 21
定义一个Date 类,数据成员有year,month, day。以“年_月_日“的格式输出日期, 还提供把天加一的成员函数nextdate( ),要求能测试出如下的结果:
5星 · 资源好评率100%
可以定义一个名为`Date`的类,包含三个私有成员变量`year`, `month`, 和 `day`,分别代表年、月、日。为了满足需求,我会添加一些访问器和修改器方法,并提供错误检查。以下是这个类的基本结构:
```java
public class Date {
private int year;
private int month;
private int day;
// 构造函数,输入年月日并进行有效性检查
public Date(int year, int month, int day) {
if (month < 1 || month > 12) {
throw new IllegalArgumentException("Month must be between 1 and 12.");
}
if (day < 1 || (month == 2 && !isLeapYear(year)) ? day > 28 : day > getDaysInMonth(month, year)) {
throw new IllegalArgumentException("Day does not fit the range for this month.");
}
this.year = year;
this.month = month;
this.day = day;
}
// 输入年月日的方法
public void setYearMonthDay(int year, int month, int day) {
// 使用构造函数验证输入的有效性
Date date = new Date(year, month, day);
this.year = date.year;
this.month = date.month;
this.day = date.day;
}
// 年-月-日的格式打印
@Override
public String toString() {
return String.format("%d-%02d-%02d", year, month, day);
}
// 年/月/日的格式打印
public String printWithSlash() {
return String.format("%d/%02d/%02d", year, month, day);
}
// 判断当前日期是否早于另一个日期
public boolean isBefore(Date otherDate) {
return this.year < otherDate.year ||
(this.year == otherDate.year && this.month < otherDate.month) ||
(this.year == otherDate.year && this.month == otherDate.month && this.day < otherDate.day);
}
// 辅助方法,获取给定月份的天数(考虑闰年)
private int getDaysInMonth(int month, int year) {
switch (month) {
case 2:
return isLeapYear(year) ? 29 : 28;
case 4:
case 6:
case 9:
case 11:
return 30;
default:
return 31;
}
}
// 判断给定年份是否为闰年
private boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
}
```
阅读全文