我是一名新手程序员,正在尝试制作日历(作业的一部分)。我已经完成了所有其他事情,但是在我找到新年指数(从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;
}
非常感谢任何帮助!
答案 0 :(得分:1)
看看你是如何计算闰年的 - 如果你使用的是公历,闰年只发生在可被4整除的年份上除非被100整除,除非年份也被400整除。
因此,1900年(可被100整除但不会被400整除)是常见的一年,而2000年(可被100和400整除)是闰年。
将这个逻辑运用到如何计算闰年。