不要自卑,去提升实力
互联网行业谁技术牛谁是爹
如果文章可以带给你能量,那是最好的事!请相信自己
加油o~

题目来源: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);
}
}