计算到达18岁生日所经过的总天数
Problem Description
Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮忙计算一下他和他的几个朋友从出生到达18岁生日所经过的总天数,让他好来比较一下。
Input
一个数T,后面T行每行有一个日期,格式是YYYY-MM-DD。如我的生日是1988-03-07。
Output
T行,每行一个数,表示此人从出生到18岁生日所经过的天数。如果这个人没有18岁生日,就输出-1。
Sample Input
1 1988-03-07
Sample Output
6574
解题思路:
这道题难度并不大,先考虑这个人没有18岁生日的情况。显然只有可能是2月29日出生的,而且出生后的第18年一定不是闰年(18不是4的倍数,出生年一定是闰年)。因此,2月29日出生的人没有18岁生日,输出-1。
判断任意年份是否为闰年,需要满足以下条件中的任意一个:
① 该年份能被 4 整除同时不能被 100 整除;
② 该年份能被400整除。
Scanner input = new Scanner(System.in);int n = input.nextInt(); // 数T,T行每行有一个日期input.nextLine();for (int i = 0; i < n; i++) {String time = input.nextLine(); // 读入日期保存在字符串time变量里SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");if (n == 0)break;try {Date date1 = sdf.parse(time); // time转换为Date类型Date date2 = new Date(); // 初始化date2用来保存18年后日期Calendar cal1 = Calendar.getInstance(); // 初始化cal1用来保存初始日期Calendar cal2 = Calendar.getInstance(); // 初始化cal2用来保存18年后日期cal1.setTime(date1);cal2.setTime(date1);cal2.add(Calendar.YEAR, 18); // 加上18年后的cal2date2 = cal2.getTime();long day1 = (long) date1.getTime() / (1000 * 60 * 60 * 24); // 算初始日期的总天数long day2 = (long) date2.getTime() / (1000 * 60 * 60 * 24); // 算18年后的总天数// Calendar.MONTH // 月份是从0开始的,所以要加1 // Calendar.DATE 即是日if (cal1.get(Calendar.MONTH) + 1 == 2 && cal1.get(Calendar.DATE) == 29){System.out.println("-1");} else {System.out.println(day2 - day1); // 相减便是过去的天数!}}catch (ParseException e) {System.out.println("输入失败!");e.printStackTrace();}}
计算到达18岁生日所经过的总天数相关推荐
- 18岁生日所经过的总天数
Problem Description Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所 ...
- HDU1201 18岁生日【日期计算】
18岁生日 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- HDU1201 18岁生日【日期计算+水题】
18岁生日 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- hdu1201 18岁生日(java版本)
每日一看 18岁生日 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- 暑假集训day6——E - 18岁生日(20)
E - 18岁生日(20) Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮 ...
- HD1201 18岁生日
18岁生日 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...
- HDU-1201,18岁生日
Problem Description: Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样, ...
- 1105: 18岁生日
题目描述 Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮忙计算一下他和他的 ...
- E - 18岁生日(20)
添加链接描述 E - 18岁生日(20) HDU - 1201 Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢 ...
最新文章
- 一款很好用的页面滚动元素动画插件-AOS.JS
- 百度bae mysql_微信公众号开发第二课 百度BAE搭建和数据库使用
- python绘制直方图显示数字_Python实现绘制双柱状图并显示数值功能示例
- 如何在Java中生成特定范围内的随机整数?
- java kcp,重新认识KCP - osc_rreaoxa0的个人空间 - OSCHINA - 中文开源技术交流社区
- mysql5.6 with as 用法_python面试专题with 关键字与上下文管理
- vega56刷64_Vega56刷入BIOS跑分直逼旗舰Vega64
- 一篇由Google Trend引发的Post
- 实现strSrt()
- Google大牛分享的面试秘籍
- 别被别人抢走了你的时间
- 如何开启GBase XDM的操作日志
- openGauss之gsql工具的使用
- SpringBoot:Sa-Token的具体介绍与使用
- 张近东的大商之道:企业价值在于“为别人所用” | 一点财经
- Centos系统服务器挂载硬盘(ntfs格式和exfat格式)
- 红队笔记-1(主机发现,情报收集,内网信息收集)
- nodejs 之npm包
- DHCP option43配置方法
- 杨志暗暗地喝采道 办公软件