java写 题目描述: 在我们现在使用的日历中, 闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰年。例如:1

题目描述:


在我们现在使用的日历中, 闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰年。例如:1700, 1800, 1900 和 2100 不是闰年,而 1600, 2000 和 2400是闰年。给定从公元2000年1月1日(星期六)开始逝去的天数,你的任务是计算出这一天是哪年哪月哪日星期几。
输入描述:


输入包含若干行,每行包含一个正整数,表示从2000年1月1日开始逝去的天数。输入最后一行是-1, 不必处理。可以假设结果的年份不会超过9999。
输出描述:


对每个测试样例,输出一行,该行包含对应的日期和星期几。格式为"YYYY-MM-DD DayOfWeek", 其中 "DayOfWeek" 必须是下面中的一个: "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" and "Saturday "。
样例输入:


1730


1740


1750


1751


-1
样例输出:


2004-09-26 Sunday


2004-10-06 Wednesday


2004-10-16 Saturday


2004-10-17 Sunday


package msy javaclass;
import java.util.Scanner;

public class O {
    public static void main(String[] args) {
        int []months={31,28,31,30,31,30,31,31,30,31,30,31};
        Scanner Sc = new Scanner(System.in);
        while(Sc.hasNext()) {
            int d=Sc.nextInt();
            if(d>=0){
            calculate(d);
            switch (d % 7) {
                case 0:
                    System.out.println("Saturday");
                    break;
                case 1:
                    System.out.println("Sunday");
                    break;
                case 2:
                    System.out.println("Monday");
                    break;
                case 3:
                    System.out.println("Tuesday");
                    break;
                case 4:
                    System.out.println("Wednesday");
                    break;
                case 5:
                    System.out.println("Thursday");
                    break;
                case 6:
                    System.out.println("Friday");
                    break;
            }
        }else if (d<0&&d!=-1){
                calculate(d);
                switch (Math.abs(d)%7){
                    case 0:
                        System.out.println("Saturday");
                        break;
                    case 1:
                        System.out.println("Friday");
                        break;
                    case 2:
                        System.out.println("Thursday");
                        break;
                    case 3:
                        System.out.println("Wednesday");
                        break;
                    case 4:
                        System.out.println("Tuesday");
                        break;
                    case 5:
                        System.out.println("Monday");
                        break;
                    case 6:
                        System.out.println("Sunday");
                        break;
                }
            }else{break;}
        }
        }
    public static int count(int year) {
        if(year%400==0||(year%4==0&&year%100!=0))
            return 366;
        else
            return 365;
    }
    public static void calculate(int d){
        int a=2000;
        int []months={31,28,31,30,31,30,31,31,30,31,30,31};
        while(d>=0)
        {
            d-=count(a);
            a++;
        }
        d+=count(a-1);
        System.out.print(a-1+"-");
        if(count(a-1)==366)
            months[1]=29;
        int n=0;
        while(d>months[n])
        {
            d-=months[n];
            n++;
        }
        if(n<9)
            System.out.print("0");;
        System.out.print(n+1+"-");
        if(d<10)
            System.out.print("0");
        System.out.print(d+1+"-");
    }
}

猜你喜欢

转载自blog.csdn.net/qq_37455615/article/details/80219674