欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

codeup 1928 日期差值(Java语言)

程序员文章站 2022-06-09 20:41:47
题目来源:codeup题目描述:有两个日期,求两个日期之间的天数,如果两个日期是连续的,则规定他们之间的天数为两天。样例输入:2013010120130105样例输出:5解题思路:闰平年的天数可以利用打表法,填入一个二维数组中,方便直接调用最简单的就是一天一天的累加,直到天数小的加到等于大的如果天数达到该月数最大,月数+1,天数置为1如果月数达到13,年数+1,月数置为1优化可以先将year1和year2的差值变为1,之后再进行上述操作代码:/** *作者:魏...

题目来源:codeup

题目描述:

有两个日期,求两个日期之间的天数,如果两个日期是连续的,则规定他们之间的天数为两天。

样例输入:

20130101
20130105

样例输出:

5

解题思路:

闰平年的天数可以利用打表法,填入一个二维数组中,方便直接调用
最简单的就是一天一天的累加,直到天数小的加到等于大的
如果天数达到该月数最大,月数+1,天数置为1
如果月数达到13,年数+1,月数置为1
优化可以先将year1和year2的差值变为1,之后再进行上述操作

代码:

/**
 *作者:魏宝航
 *2020年11月26日,下午20:32
 */
import java.util.*;
public class Test{
	public static int[][] month=new int[][] {
		{0,0},
		{31,31},{28,29},{31,31},
		{30,30},{31,31},{30,30},
		{31,31},{31,31},{30,30},
		{31,31},{30,30},{31,31}};
	public static int isLeap(int year) {
		if((year%4==0&&year%100!=0)||(year%400==0)){
			return 1;
		}
		return 0;
	}
    public static void main(String[] args) {
    	Scanner sc=new Scanner(System.in);
        int time1,time2;
        time1=sc.nextInt();
        time2=sc.nextInt();
        if(time1>time2) {
        	time1^=time2;
        	time2^=time1;
        	time1^=time2;
        }
        int year1=time1/10000;
        int year2=time2/10000;
        int month1=time1%10000/100;
        int month2=time2%10000/100;
        int day1=time1%100;
        int day2=time2%100;
        int ans=1;
        while(year1<year2||month1<month2||day1<day2) {
        	day1++;
        	if(month[month1][isLeap(year1)]+1==day1) {
        		month1++;
        		day1=1;
        	}
        	if(month1==13) {
        		year1++;
        		month1=1;
        	}
        	ans++;
        }
        System.out.println("两天的间隔为:"+ans);
    }
}  

本文地址:https://blog.csdn.net/m0_47256162/article/details/110203778