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 ...
随机推荐
- vue中class用法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- js 根据滚动条加载数据
很久没记笔记了,最近搞起web开发了 <html> <head> <script src="http://code.jquery.com/jquery-1.7. ...
- Android 查看和修改网络mtu
CPU:RK3288 系统:Android 5.1 MTU:通信术语 最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以 ...
- 会话技术cookie与session
目录 会话技术cookie 会话技术 cookie 服务器怎样把Cookie写 给客户端 服务器如何获取客户端携带的cookie session session简介 Session如何办到在一个ser ...
- mybatis bind标签
开门见山的说,平时写模糊查询,一直用${name},例如: select * from table where name like '%${name}%' 后来知道了,这样写可能会引发sql注入,于是 ...
- 如何在Windows Server 2008服务器中把Tomcat启动程序添加到服务中
转自:https://blog.51cto.com/zdytesting/2314093 tomcat所在的bin目录: 添加服务: service install service_name 移除服务 ...
- 测试开发中Django和Flask框架
Python测试开发中Django和Flask框架 为了更好地阐述这个问题,我们把开发一个应用的过程进行类比,往往开发一个应用(web应用.系统应用)跟建造房子的过程一样,需要先打地基,搭好骨架,然后 ...
- MySQL 8.0: From SQL Tables to JSON Documents (and back again)
MySQL 8.0: From SQL Tables to JSON Documents (and back again) | MySQL Server Bloghttps://mysqlserver ...
- python脚本实现-excel二级统计
pandas和SQL数据分析实战视频教程 https://study.163.com/course/courseMain.htm?courseId=1006383008&share=2& ...
- git notes的使用
1. 获取notes git fetch origin refs/notes/*:refs/notes/* 2. 设置notes 2.1 git config --add core.notesRef ...