查找一年中第一天(新年)的索引

时间:2017-10-16 16:15:43

标签: java

我是一名新手程序员,正在尝试制作日历(作业的一部分)。我已经完成了所有其他事情,但是在我找到新年指数(从0到6)的部分被卡住了,每年向右移一个,除了闰年后的年份变为2。我对这个特定的部分没有一个好的算法,所以我只是想到了它。它计算并工作到1800,但之后它不再正常工作。我不知道为什么。但这是代码:

public static int indexOfNewYear(int month,int year){

    int count = 0;
    int modOfDays = 0;
    int numberOfDays = 365;

    year = year - 2; // starts with year 2 because index of New Year is 0

    for (int t = 1; t <= year; year--){

        if(year + 2 == 1753){ // year 1752 skipped 11 days ahead
            numberOfDays += 10;
        } 

        count = modOfDays + numberOfDays;
        modOfDays = count  % 7;     

        if((year + 1) %  4 == 0 && year != 1){ // leap year skips two indexes
            modOfDays += 1;
        }
    }

    //System.out.println("modOfDays: " + modOfDays);
    return modOfDays;
}

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

看看你是如何计算闰年的 - 如果你使用的是公历,闰年只发生在可被4整除的年份上除非被100整除,除非年份也被400整除。

因此,1900年(可被100整除但不会被400整除)是常见的一年,而2000年(可被100和400整除)是闰年。

将这个逻辑运用到如何计算闰年。