构造一个日期类(MyDate.java),

本文介绍了一个名为MyDate的Java日期类的实现,包括私有属性年、月、日,提供了无参和全参数构造方法,以及带有验证的 Setter 和 Getter 方法。此外,类中还实现了按'yyyy-MM-dd'格式存储日期的字符串方法和计算日期在当年的第几天的功能。在测试类中,用户可以输入年、月、日创建日期实例,并打印出日期字符串和当年天数。
摘要由CSDN通过智能技术生成

构造一个日期类(MyDate.java),
要求:
1、包含年、月、日 三个私有属性;
2、提供无参构造方法,提供全部属性的构造方法;
3、在私有属性的Setter和Getter方法的代码修改,保证年份在1-9999年,月为1-12月,日为1-31天。
4、并提供按”yyyy-MM-dd”格式的字符串存取日期的方法;实例化一个该类后,输入一个日期,可以计算出该日期是当年的第几天,要求计算天数的方法由日期类提供,可直接通过该类的实例去调用。

日期类:

package Mydate;

public class Myday {
	private int years;
	private int month;
	private int day;

	String rq;// 用来存放日期字符串
	int tianshu[] = { 0, 31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };// 用来存放每月的天数
	int sum;// 计算为该年的第几天

	// 无参构造方法//
	Myday() {
	}

	// 所有属性有参构造方法
	Myday(int years, int month, int day) {
		this.years = years;
		this.month = month;
		this.day = day;
	}

	// 构造所有属性的GETTERS STETERS方法
	public int getYears() {
		return years;
	}

	public void setYears(int years) {
		if (1 <= years && years <= 9999) {
			this.years = years;
		} else {
			System.out.println("输入年份有误");
		}
	}

	public int getMonth() {
		return month;
	}

	public void setMonth(int month) {
		if (1 <= month && month <= 12) {
			this.month = month;
		} else {
			System.out.println("输入月份有误");
		}

	}

	public int getDay() {
		return day;
	}

	public void setDay(int day) {
		if (0 < day && day <= 31) {
			// 如果是2月
			if (month == 2) {
				// 如果是闰年
				if (years % 4 == 0 && years % 100 != 0) {
					if (day <= 29) {
						// 把2月份的天数设置为29天
						tianshu[2] = 29;
						this.day = day;
					} else {
						System.out.println("输入天数有误");
					}
				} else {
					if (day <= 28) {
						// 把2月份的天数设置为28天
						tianshu[2] = 28;
						this.day = day;
					} else {
						System.out.println("输入天数有误");
					}
				}
			}
			// 如果不是2月,月份为1,3,5,7,8,10,12
			else if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
				if (day <= 31) {
					this.day = day;
				}
			} else {
				if (day <= 30) {
					this.day = day;
				} else {
					System.out.println("输入天数有误");
				}
			}
		}
	}

	// 用字符串"yyyy-mm-dd"样式存放日期
	public String Riqi() {
		if (month < 10) {
			rq = years + "-" + 0 + month + "-" + day;
		} else {
			rq = years + "-" + month + "-" + day;
		}
		return "存放日期成功:" + rq;
	}

	// 在这个日期类里设置一个方法来计算当前日期为该年的第几天
	public String Sum() {
		for (int j = 1; j < month; j++) {
			sum = sum + tianshu[j];
		}
		sum = sum + day;
		return month + "月" + day + "日" + "为该年的第" + this.sum + "天";
	}
}

测试类

package Mydate;

public class DateTest {
	
		public static void main(String[] arge){
			Myday M = new Myday();
			java.util.Scanner s = new java.util.Scanner(System.in);
			//分别设置日期
			System.out.println("请输入年份");
			M.setYears(s.nextInt());
			System.out.println("请输入月份");
			M.setMonth(s.nextInt());
			System.out.println("请输入日");
			M.setDay(s.nextInt());
			//调用存放日期方法
			System.out.println(M.Riqi());	
			//调用计算天数方法
			System.out.println(M.Sum());		
		}
	}

1.编写MyDate.java 2.该有如下构造方法 2.1 无参数构造方法public MyDate(),以当前的系统时间构造MyDate对象 2.2 public MyDate(int year, int month, int day), 以指定的年月日构造MyDate对象 3.该有如下属性 3.1 private int year ;//年 3.2 private int month; //月 3.3 private int day; //日 4.该有如下方法 4.1 public String after(int day); //返回当前对象代表的日期之后day天的日期,比如当前对象是2008-8-8,调用after(5)以后,应该返回2008-8-13,格式可自定义 4.2 public String before(int day); //返回当前对象代表的日期之前day天的日期,比如当前对象是2008-8-8,调用before(5)以后,应该返回2008-8-3,格式可自定义 4.3 public void setYear(int year); //设置年为指定值year 4.4 public void setMonth(int month); //设置月为指定值month 4.5 public void setDay(int day); //设置日为指定值day 4.6 public int getYear(); //返回当前对象的年 4.7 public int getMonth(); //返回当前对象的月 4.8 public int getDay(); //返回当前对象的日 4.9 public void set (int year, int month, int day); //设置年、月、日为指定的值year、month、day 4.10 public String toString();//以字符串形式返回当前对象的年月日,例如2008年08月08日,格式可自定义 4.11 public boolean equals(MyDate mydate);//当前对象与另一个对象比较,如果两个对象的年月日均相等,则返回true,反之返回false 5.编写TestMyDate.java,在main方法中对MyDate的各个方法进行测试 6.按照编程规范为MyDate.java编写规范的代码 7.按照java doc API的要求,对代码编写规范的注释,然后利用javadoc.exe命令生成MyDate.java的API doc 8.撰写上机报告
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值