中级农民
- 积分
- 102
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2019-9-21
- 最后登录
- 1970-1-1
|
直接上运行结果。下面说说写代码时候收获和总结,按写每个method的顺序讲1.- public static boolean isLeapYear(int year)
复制代码 判断是否为闰年
一开始我是用多个if-else语句写的,代码很长不简洁最后改成- return year%4==0&&year%100!=0||year%400==0;
复制代码 一句话解决,其实就一个数学问题,想清楚了就很简答。
2.- public static int daysInMonth(int month, int year)
复制代码 求给定年份和月份,求其中月份的天数
先声明一个整数型数组,里面存放1~12月的天数,其中2月先设置为28天。利用isLeapYear函数判断是否为闰年,如果为闰年且月份为2,返回29,否则返回days[month-1];
3.- public static boolean isValidDate(int month, int day, int year)
复制代码 判断日期是否正确
这里用到if-else if,先判断年,再判断月份,再判断天数,其中判断天数的条件用到了2写的函数。
4.- public Date(int month, int day, int year)
复制代码 三变量构造函数
直接用3写的函数判断日期是否正确,若正确给field初始化,若不真确退出。
5.重写toString()方法
Java里每一个类直接或者间接地继承了Object这个类,Object这个类里就有toStirng()方法,其实下面的代码是一样的
- System.out println(obj)
- System.out.println(obj.toString())
复制代码
如果不重写toString()方法,由API文档可知会输出getClass().getName() + '@' + Integer.toHexString(hashCode())
6.- public boolean isBefore(Date d)
复制代码 判断obj1的日期是否在obj2之前
我分年,月,日一层一层写,需要注意年份相同的情况
7.- public boolean isAfter(Date d)
复制代码 判断obj1的日期是否在obj2之后
Hint 1也说了不能因为要考虑日期相同的时候,其实加一个判断日期相同的条件就OK了
8.计算该日期在该年的第几天
for循环增加该月份之前的每一个月份的天数,最后加上day
9.- public int difference(Date d)
复制代码 计算两个日期间的天数差
我又多写了一个函数用来计算该日期与A.D.1的差,最后直接调用两个getdays()方法相减就好
10.单变量构造函数
我用了2楼介绍的方法,但是正则式\\d{1,2}\\/\\d{1,2}\\/\\d{1,4}没办法判断22,22,1900这种错误日期,所以后面要调用一次方法3。
|
|