题解 | #计算日期到天数转换#
计算日期到天数转换
https://www.nowcoder.com/practice/769d45d455fe40b385ba32f97e7bcded
采用数组解法,把平年闰年都定义到两个数组中,然后根据判断取哪一个数组当作输入年的日历。从第 month - 1 月开始求天数和,然后再加上输入的日期,得到最终天数。
import java.util.Scanner; public class Main { // 平年数组 private static final int[] arr1 = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 闰年数组 private static final int[] arr2 = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextInt()) { String s = in.nextLine(); String[] sa = s.split(" "); // 拆分年月日 int year = Integer.parseInt(sa[0]); int month = Integer.parseInt(sa[1]); int days = Integer.parseInt(sa[2]); // 判断是不是闰年,闰年用闰年数组,否则用平年数组 if (isLeapYear(year)) { System.out.println(dayCount(arr2, month, days)); } else { System.out.println(dayCount(arr1, month, days)); } } } // 判断是否是闰年 private static boolean isLeapYear(int year) { // 判断闰年的条件,能被 4 整除但是不能被 100 整除;或者能被 400 整除的,都是闰年 return (year % 4 == 0 && !(year % 100 == 0)) || year % 400 == 0; } // 日期计算方法 private static int dayCount(int[] cal, int month, int days) { int n = days; // 遍历日历数组,把他们的日期都叠加起来,注意叠加的是 month 之前的月,而不是 month 本月 for (int i = 0; i < month - 1; i++) { n += cal[i]; } return n; } }