杭电oj--第几天?

给定一个日期,输出这个日期是该年的第几天。

输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。

对于每组输入数据,输出一行,表示该日期是该年的第几天

例如

     输入:1985/1/20

                2006/3/12

     输出:20

                71

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            String s = sc.nextLine();//接收日期
            System.out.println(days(s));//创建一个方法计算天数
        }
    }
    private static int days(String s) {
        String[] s1 = s.split("/");
        int[] s2 = new int[s1.length];
        for (int i = 0; i < s1.length; i++) {
            s2[i] = Integer.parseInt(s1[i]);
        }
        int n = s2[0];
        if (isLeapYear(n)) {//是闰年
            switch (s1[1]) {
                case "1":
                    return s2[2];
                case "2":
                    return s2[2] + 31;
                case "3":
                    return s2[2] + 60;
                case "4":
                    return s2[2] + 91;
                case "5":
                    return s2[2] + 121;
                case "6":
                    return s2[2] + 152;
                case "7":
                    return s2[2] + 182;
                case "8":
                    return s2[2] + 213;
                case "9":
                    return s2[2] + 244;
                case "10":
                    return s2[2] + 274;
                case "11":
                    return s2[2] + 305;
                case "12":
                    return s2[2] + 335;
            }
        } else {//不是闰年
            switch (s1[1]) {
                case "1":
                    return s2[2];
                case "2":
                    return s2[2] + 31;
                case "3":
                    return s2[2] + 59;
                case "4":
                    return s2[2] + 90;
                case "5":
                    return s2[2] + 120;
                case "6":
                    return s2[2] + 151;
                case "7":
                    return s2[2] + 181;
                case "8":
                    return s2[2] + 212;
                case "9":
                    return s2[2] + 243;
                case "10":
                    return s2[2] + 273;
                case "11":
                    return s2[2] + 304;
                case "12":
                    return s2[2] + 334;
            }
        }
    return 1;
    }

    private static boolean isLeapYear(int n) {//判断是不是闰年的方法
        if (n % 400 == 0) return true;
        else if (n % 4 == 0 && n % 100 != 0) return true;
        else return false;
    }
}

你可能感兴趣的:(java,开发语言)