WUSTOJ 1275: 男神的逆袭(Java)
1275: 男神的逆袭
题目
计算两个日期相差的天数。更多内容点击标题。
分析
下面说一下我的思路(自己写的,无扩展性):
- 给定一个日期,首先计算这个日期是这一年的第多少天。
- 给定两个日期,直接比较年份即可,闰年相差366天,平年相差365天,计算出相差的天数。
- 然后将两个日期在第一步中算的天数相减。
- 将2中和3中得到的天数相加即为结果。
CSDN上计算日期差的博客有很多,我试了几个都没成功(可能是我写错了,大家可以尝试一下)。个人觉得我的方法比较笨,EMMM,就当练练基础吧(自我安慰QAQ),基础不太好的也可以试试。
代码
/**
* 用时:1640ms
* @author PengHao
* @version A6.1
* @date 2019年4月20日 上午10:15:06
*/
import java.util.Scanner;
public class Main {
private Scanner sc;
private int t, y1, m1, d1, y2, m2, d2; // 输入的数据
public Main() {
sc = new Scanner(System.in);
Date date1, date2;
t = sc.nextInt();
while ((t--) > 0) {
input();
date1 = new Date(y1, m1, d1);
date2 = new Date(y2, m2, d2);
System.out.println(Date.daysBetweenYears(date1, date2));
}
sc.close();
}
/**
* 输入
*/
private void input() {
y1 = sc.nextInt();
m1 = sc.nextInt();
d1 = sc.nextInt();
y2 = sc.nextInt();
m2 = sc.nextInt();
d2 = sc.nextInt();
}
public static void main(String[] args) {
new Main();
}
}
/**
* 日期类
*
* @author PengHao
* @version A2.0
* @date 2019年4月20日 上午10:41:43
*/
class Date {
/**
* @Field daysOfYear 当前日期是这一年的第多少天
*/
private int year, month, day, daysOfYear;
public Date(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
daysOfYear = daysOfYear();
}
/**
* @return 当前日期在这一年的第多少天
*/
private int daysOfYear() {
int days = day; // 当月的天数
// 月份天数表
int[] daysOfMonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
// 闰年加1天
if (0 == year % 4 && 0 != year % 100 || 0 == year % 400) {
daysOfMonth[1]++;
}
// 前面month-1个月的天数
for (int i = 0; i < month - 1; i++) {
days += daysOfMonth[i];
}
return days;
}
/**
* @param d1 第一个日期
* @param d2 第二个日期
* @return 相差天数
*/
public static int daysBetweenYears(Date d1, Date d2) {
// 同一年,直接返回当年天数的差即可
if (d1.year == d2.year) {
return Math.abs(d1.daysOfYear - d2.daysOfYear);
} else if (d1.year > d2.year) {
// 保证d1的年份小于d2的年份
Date temp = d1;
d1 = d2;
d2 = temp;
}
int days = 0;
for (int i = d1.year; i < d2.year; i++) {
if (0 == i % 4 && 0 != i % 100 || 0 == i % 400) {
days += 366; // 闰年加366
} else {
days += 365; // 平年加365
}
}
days += d2.daysOfYear - d1.daysOfYear;
return days;
}
}
写在最后:
- 如需转载,请于标题下注明链接形式的wowpH的博客即可;
- 代码原创,如需公开引用,不能删除首行注释(作者,版本号,时间等信息)。
WUSTOJ 1275: 男神的逆袭(Java)的更多相关文章
- Android Studio 2.0 Preview 4 的逆袭以及各种神注释
Android Studio 2.0 Preview 4 的逆袭 一.Android Studio 2.0 Preview 4 AS2.0的改变非常大,今天刚装上,迫不及待的就来分享了,首先我们下载一 ...
- 二本毕业,我是如何逆袭成为BAT年薪40W的Java工程师的?
身边的师弟师妹经常问到:非计算机专业出身,你是在2年内如何逆袭成BAT年薪40W的资深开发工程师的.其实很简单——努力! 我16年毕业于普通的二本学校,非计算机专业出身,只因为对软件开发感兴趣,所以找 ...
- 中小公司的Java工程师应该如何逆袭冲进BAT?
(1)80% Java工程师都有的迷茫 这篇文章,跟大家聊一聊很多很多很多人问我的一个问题:中小公司的Java工程师应该如何规划准备,才能跳槽进入BAT这类一线互联网公司? 之所以我用了三个 “很多” ...
- 面渣逆袭:Java集合连环三十问
大家好,我是老三.上期发布了一篇:面渣逆袭:HashMap追魂二十三问,反响很好! 围观群众纷纷表示 不写,是不可能不写的,只有卷才能维持了生活这样子. 当然,我写的这一系列,不是背诵版,是理解版,很 ...
- 面渣逆袭:Java并发六十问,快来看看你会多少道!
大家好,我是老三,面渣逆袭 继续,这节我们来盘一盘另一个面试必问知识点--Java并发. 这篇文章有点长,四万字,图文详解六十道Java并发面试题.人已经肝麻了,大家可以点赞.收藏慢慢看!扶我起来,我 ...
- 面渣逆袭:Java基础五十三问,快来看看有没有你不会的!
大家好,我是老三, 面渣逆袭 系列继续.这节我们回到梦开始的地方--Java基础,其实过了萌新阶段,面试问基础就问的不多,但是保不齐突然问一下.想一下,总不能张口高并发.闭口分布式,结果什么是面向对象 ...
- 小课堂Week8 例外处理设计的逆袭Part1
小课堂Week8 例外处理设计的逆袭Part1 今天和大家讲一本书,书名是<例外处理设计的逆袭>. 为什么想讲这本书,是因为,例外处理在程序代码中到处存在,但是这些到底该如何写好,总觉得有 ...
- 【文学文娱】《屌丝逆袭》-出任CEO、迎娶白富美、走上人生巅峰
本文地址:http://www.cnblogs.com/aiweixiao/p/7759790.html 原文地址:(微信公众号) 原创 2017-10-30 微信号wozhuzaisi 程序员的文娱 ...
- Javascript:一个屌丝的逆袭
HTML负责结构, CSS负责展示, 而我(加上AJAX, JSON) 负责逻辑.于是前端编程三剑客形成了. http://mp.weixin.qq.com/s?__biz=MzAxOTc0NzExN ...
随机推荐
- CF590E Birthday
题意 给定 \(n\) 个只由 \(a,b\) 组成的字符串,保证两两不同. 要求从中选出尽可能多的字符串,使得选出的字符串中,任意一个字符串不是另一个的子串. 求最多能选多少并输出一个可行解. \( ...
- 图灵学院java架构课程
1.wps文档地址 https://docs.qq.com/doc/DRVNLUndvTmFSdEhO 2.百度网盘地址 https://pan.baidu.com/s/1uxaTzJZHKrsw_H ...
- hadoop2.9.2 调整jvm
错误:namenode挂掉 查看hadoop的日志文件,发现存在大量的GC,导致namenode挂掉 命令行执行错误信息: 解决: 查看系统内存: # /data1/hadoop/hadoop/etc ...
- bad object refs/remotes/origin/HEAD
How to handle git gc fatal: bad object refs/remotes/origin/HEAD error: failed to run repack I random ...
- SpringBoot中的异常处理方式
SpringBoot中有五种处理异常的方式: 一.自定义错误页面 SpringBoot默认的处理异常机制:SpringBoot默认的已经提供了一套处理异常的机制.一旦程序出现了异常SpringBoot ...
- 001-java 设计模式概述
一.概述 思维导图 GoF(“四人帮”,又称Gang of Four,即Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides) 1 ...
- osg fbx 模型结构操作
osg::Node* TeslaManage::findOsgNodeByName(QString &nodeNme) { osg::Node* findNode = NULL; std::v ...
- osg fbx 绘制坐标轴、控制模型影藏与显示
int main() { osg::ref_ptr<osgViewer::Viewer> viewer1 = new osgViewer::Viewer; osg::ref_ptr< ...
- 取用户中文名 FDM_CUST_USER_NAME_READ_SINGLE
DATA:lv_first TYPE ad_namefir, lv_last TYPE ad_namelas, lv_full TYPE ad_namtext. CALL ...
- 第一个php文件运行
运行会发现报错,解决参考:写的很详细 http://blog.csdn.net/meegomeego/article/details/36020553