实现nextDay算法
1.题目要求
用户从键盘输入”2014/11/11”,然后输出该输入的下一天日期是多少.
要求很简单,看上去也不是很复杂,但是要考虑到闰年,月份进位等等问题.
2.思路分析
- 用户输入合法性问题
- nextDay的推算算法
我们先看第一个问题:
这个比较简单,我们可以使用正则表达式来匹配用户的输入,当然了,只是正则表达式可能还无法完全约束合法,我们可以继续针对个别的在正确的校验.
1 | //使用分隔符'/'分割年月日 |
这样,就可以得到一个合法的类似于”2013/14/22”这样的字符串,但是我们发现,14月仍然是不合法的,仍需我们再次校验合法性.于是,可以封装三个函数:
1 | public static boolean isLegalYear(int year) { |
这样,我们就可以得到一个正确合法的输入日期,然后就可以依照算法,计算下一天.
再看第二个问题:
算法说起来也比较简单,类似于一个加法器,只是各个位置上的进位法则不一样而已.
- 将day自加1
- 若day合法,返回该data
- 若day不合法,day赋值为1,month自加1
- 若month合法,返回该data
- 若month不合法,month赋值为1,year自加,返回data
经过上述算法计算,即可得到正确的日期了.
3.具体实现
首先封装一个data数据类:
1 | class MyData { |
1 | import java.util.*; |