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岁生日所经过的总天数相关推荐

  1. 18岁生日所经过的总天数

    Problem Description Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所 ...

  2. HDU1201 18岁生日【日期计算】

    18岁生日 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  3. HDU1201 18岁生日【日期计算+水题】

    18岁生日 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  4. hdu1201 18岁生日(java版本)

    每日一看 18岁生日 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  5. 暑假集训day6——E - 18岁生日(20)

    E - 18岁生日(20) Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮 ...

  6. HD1201 18岁生日

    18岁生日                                     Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65 ...

  7. HDU-1201,18岁生日

    Problem Description: Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样, ...

  8. 1105: 18岁生日

    题目描述 Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮忙计算一下他和他的 ...

  9. E - 18岁生日(20)

    添加链接描述 E - 18岁生日(20) HDU - 1201 Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢 ...

最新文章

  1. 一款很好用的页面滚动元素动画插件-AOS.JS
  2. 百度bae mysql_微信公众号开发第二课 百度BAE搭建和数据库使用
  3. python绘制直方图显示数字_Python实现绘制双柱状图并显示数值功能示例
  4. 如何在Java中生成特定范围内的随机整数?
  5. java kcp,重新认识KCP - osc_rreaoxa0的个人空间 - OSCHINA - 中文开源技术交流社区
  6. mysql5.6 with as 用法_python面试专题with 关键字与上下文管理
  7. vega56刷64_Vega56刷入BIOS跑分直逼旗舰Vega64
  8. 一篇由Google Trend引发的Post
  9. 实现strSrt()
  10. Google大牛分享的面试秘籍
  11. 别被别人抢走了你的时间
  12. 如何开启GBase XDM的操作日志
  13. openGauss之gsql工具的使用
  14. SpringBoot:Sa-Token的具体介绍与使用
  15. 张近东的大商之道:企业价值在于“为别人所用” | 一点财经
  16. Centos系统服务器挂载硬盘(ntfs格式和exfat格式)
  17. 红队笔记-1(主机发现,情报收集,内网信息收集)
  18. nodejs 之npm包
  19. DHCP option43配置方法
  20. 杨志暗暗地喝采道 办公软件

热门文章

  1. 什么是库尼乌斯(the Cuneus)
  2. Eclipse官网快速下载
  3. 领先农业技术平台Dimitra,帮助小农户实现农业现代化
  4. WRF——OBSGRID使用方法(gfortran编译)
  5. 2011 ATMEL AVR 校园设计大赛获奖名单
  6. 无法定位程序输入点(cmake opencv_contrib,并配置后)
  7. 大数据学习之分布式数据库HBase
  8. 图片旋转90度解决的方法
  9. 番茄钟App(Pomodoro Tracker)
  10. 诸葛:分析师是如何写好数据研究报告的?