题目描述
根据输入的日期,计算是这一年的第几天。。
eg:
输入:
2012 12 31
输出:
366
以下是本篇文章正文内容,下面案例可供参考
解题思路
先将每月的天数保存到一个数组中
若年份为闰年,则将二月的天数+1
计算给的月份之前的天数,最后再加上给的天数
代码如下
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int y = sc.nextInt();
int m = sc.nextInt();
int d = sc.nextInt();
int day = outDay(y, m, d);
System.out.println(day);
}
}
//计算日期到天数转换
private static int outDay(int y, int m, int d) {
int[] day = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//每月的天数
if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) {
day[1] = 29;//闰年二月为29天
}
if (y<=0||m<=0||m>12||d<=0||d>day[m-1]){
return -1;//不合法的日期
}
int sum = 0;
for (int i = 0; i < m-1; i++) {
sum += day[i];//月份之前的天数
}
return sum + d;//加上天数
}
}
注意:
当月份或天数不合法时,返回-1
即:
y<=0||m<=0||m>12||d<=0||d>day[m-1]