gpt4 book ai didi

java - 我的代码中的错误和幸运的答案

转载 作者:行者123 更新时间:2023-12-01 13:18:21 25 4
gpt4 key购买 nike

剧透警告!!对于项目欧拉问题 19。

问题是从 1901 年到 2000 年,每个月的第一天有多少个星期日。给定信息:1900 年 1 月 1 日是星期一,一月和三月等有 31 天,四月、六月等有 30 天,并且发生闰年可以被 4 整除的任何年份,但不能被 400 整除的世纪。在本例中适用于 2000 年。

我得到了正确的答案,但是当我用真实的日历检查结果时,结果发现我的代码正在计算星期六。我不明白为什么要这样做,有人可以帮忙吗?!

public class Sunday {

public static void main(String[] args) {

int sundayCount = 0;
int currentday = 0; // monday is 0, sunday will be 6
int dayLimit = 0;

for (int year = 1900; year < 2001; year++) {
for (int month = 1; month < 13; month++) {
// 30 days April, June, September, November
if (month == 4 || month == 6 || month == 9 || month == 11)
dayLimit = 30;

// leap year
else if (month == 2 && year % 4 == 0)
dayLimit = 29;

// February not leap year
else if (month == 2 && year % 4 != 0)
dayLimit = 28;

// Jan, March, May, July, August, October, December
else
dayLimit = 31;
for (int day = 1; day <= dayLimit; day++) {
if (day == 1 && currentday == 6 && year > 1900) {
System.out.println("year: " + year);
System.out.println("month: " + month);
sundayCount++;
}
if (currentday < 6)
currentday++;
else
currentday = 0;
}
}
}
System.out.println(sundayCount);
}
}

最佳答案

您忘记添加代码来检查 1900 年 2 月是否应该有 29 天或 28 天。由于 1900 年不是闰年,因此 1900 年不应该有 29 天。

else if (month == 2 && year % 4 == 0 && year != 1900)
dayLimit = 29;

// February not leap year
else if (month == 2)
dayLimit = 28;

这应该可以修复它。

关于java - 我的代码中的错误和幸运的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22273747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com