描述
根据输入的日期,计算是这一年的第几天。
保证年份为4位数且日期合法。
进阶:时间复杂度:O(n)\O(n) ,空间复杂度:O(1)\O(1)
输入描述:
输入一行,每行空格分割,分别是年,月,日
输出描述:
输出是这一年的第几天
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static boolean isLeapYear(int y){
if(y%400==0 || y%4==0&&y%100!=0){
return true;
}
return false;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int y=in.nextInt();
int m=in.nextInt();
int d=in.nextInt();
int sum=0;
int[] day={0,31,59,90, 120, 151, 181,
212,243, 273, 304, 334, 365};
System.out.println(isLeapYear(y)&&m>2?day[m-1]+d+1:day[m-1]+d);
}
}
}
用一个数组存放每月的累积天数{31,59, 90, 120, 151, 181, 212,243, 273, 304, 334, 365} 输入的日期天数=当月的天数 + 当月之前的累积天数 如果包含二月,再去判断是否为闰年,如果是闰年,再加1天即可