题意:

求某人从出生到18岁生日所经过的天数。如果这个人没有18岁生日,就输出-1。

思路:

通过毫秒值计算天数。

利用:来自https://www.cnblogs.com/xiohao/p/5294412.html

Date fDate=sdf.parse("2015-12-31");
Date oDate=sdf.parse("2016-01-01");
long days=(oDate.getTime()-fDate.getTime())/(1000*3600*24);
//注意:如果时间为:2016-03-18 11:59:59 和 2016-03-19 00:00:01的话差值为 0

还有一种求天数差的方法方法:

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date fDate=sdf.parse("2015-12-31");
Date oDate=sdf.parse("2016-01-01");
Calendar aCalendar = Calendar.getInstance();
aCalendar.setTime(fDate);
int day1 = aCalendar.get(Calendar.DAY_OF_YEAR);
aCalendar.setTime(oDate);
int day2 = aCalendar.get(Calendar.DAY_OF_YEAR);
int days=day2-day1; /*在不涉及到跨年的情况,此种方法是没问题的
* 但是设计跨年的情况,此种方法回出问题的哦
*
* 如果时间为:2016-03-18 11:59:59 和 2016-03-19 00:00:01的话差值为 1
*/
 import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner; public class Main{ public static void main(String[] args) throws ParseException {
Scanner scanner=new Scanner(System.in);
SimpleDateFormat fm=new SimpleDateFormat("yyyy-MM-dd");
int n=scanner.nextInt();
while(n-->0)
{
String bir=scanner.next();
String yearStr=bir.substring(0,4);
String monthStr=bir.substring(5,7);
String dayStr=bir.substring(8, 10);
int month=Integer.parseInt(monthStr);
int day=Integer.parseInt(dayStr); int year=Integer.parseInt(yearStr);
int after=year+18;
if(year%4==0||(year%100!=0&&year%400==0))//出生是闰年2.29
{//18岁不是闰年,就没有2.29
if(month==2&&day==29&&!(after%4==0||(after%100!=0&&after%400==0)))
{
System.out.println("-1");
continue;
}
} Date bird=fm.parse(bir);
String ehString=String.valueOf(after);
ehString+="-";
ehString+=String.valueOf(month);
ehString+="-";
ehString+=String.valueOf(day);
Date eighteen=fm.parse(ehString); long res=(eighteen.getTime()-bird.getTime())/(1000*3600*24);
System.out.println(res); }
} }

hdu1201 java的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. HDU1201 水题

    做多了年月日,现在基本就能水过了 18岁生日 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O ...

  3. 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题

    背景起因: 记起以前的另一次也是关于内存的调优分享下   有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...

  4. Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...

  5. 论:开发者信仰之“天下IT是一家“(Java .NET篇)

    比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...

  6. 故障重现, JAVA进程内存不够时突然挂掉模拟

    背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...

  7. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

  8. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  9. Java多线程基础学习(二)

    9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...

随机推荐

  1. JavaScript数据类型检测 数组(Array)检测方式

    前言 对于确定某个对象是不是数组,一直是数组的一个经典问题.本文专门将该问题择出来,介绍什么才是正确的javascript数组检测方式 typeof 首先,使用最常用的类型检测工具--typeof运算 ...

  2. 二叉树(BT)相关

    1.same tree /** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * ...

  3. JSP+MySQL验证登录的实现方式

    用IDEA连接MySQL验证登录实现方式核心部分代码 用setString的方法对从数据库中的提取的信息经行比对: try { Class.forName("com.mysql.jdbc.D ...

  4. 「HNOI 2019」白兔之舞

    一道清真的数论题 LOJ #3058 Luogu P5293 题解 考虑$ n=1$的时候怎么做 设$ s$为转移的方案数 设答案多项式为$\sum\limits_{i=0}^L (sx)^i\bin ...

  5. ubuntu 安装 lamp

    链接: http://www.cnblogs.com/CheeseZH/p/4694135.html

  6. openwrt 编译

    完整的编译过程: http://www.280i.com/tech/3353.html源更新: https://blog.csdn.net/ypbsyy/article/details/8121836 ...

  7. es集群数据库~运维相关

    一 数据同步方案  1 ES-JDBC  不能实现删除同步操作.MYSQL如果删除,ES不会删除  2 logstash-input-jdbc  能实现insert update,但是仍然不能实现删除 ...

  8. Sublime Text 3删除插件

    Ctrl+Shift+P调出命令窗口,输入remove: 选择第二个Remove Package,会看到如下界面: 里面列出了你已经安装的插件,之后选择你想要卸载的就好了.

  9. Python multiprocessing

     推荐教程 官方文档 multiprocess各个模块较详细介绍 廖雪峰教程--推荐 Pool中apply, apply_async的区别联系 (推荐)python多进程的理解 multiproce ...

  10. IIS 运行ASP.Net的基本配置(编辑中。。。)

    今天在新建的IIS上运行Asp.net 程序,发现IIS根本没有走asp的路由系统,直接返回了404,后来发现是IIS没有正确安装,需要安装以下的组件: 未安装前,IIS里的样子: 安装后,IIS的样 ...