gpt4 book ai didi

java - 项目欧拉 19 : Counting Sundays, Java

转载 作者:行者123 更新时间:2023-12-01 10:29:28 25 4
gpt4 key购买 nike

我正在使用Java的Calendar API来计算每个月第一天的星期日总数。以下代码为我提供了日期格式(年/月/日)的指定开始日期和结束日期 1 天的额外时间。 1900/01/01 至 1910/01/01

代码的输入格式为:
1<=测试用例<=10
开始日期
结束日期

import java.io.*;
import java.util.*;
import java.time.DayOfWeek;
public class ProjectEuler19 {

public static void main(String[] args) {
/* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
Scanner scanner = new Scanner(System.in);
int testCases = scanner.nextInt();
do{
int sundays = 0;
Calendar c = Calendar.getInstance();
int monthStart,dateStart,monthEnd,dateEnd;
int yearStart,yearEnd;
yearStart = scanner.nextInt();
monthStart = scanner.nextInt();
dateStart = scanner.nextInt();
yearEnd = scanner.nextInt();
monthEnd = scanner.nextInt();
dateEnd = scanner.nextInt();
String[] getDayOfWeek = new String[]{
"MONDAY",
"TUESDAY",
"WEDNESDAY",
"THURSDAY",
"FRIDAY",
"SATURDAY",
"SUNDAY"
};
for(int y = yearStart; y<=yearEnd; y++) {
for(int m = monthStart; m<=12; m++) {
c.set(y,m-1,1);
if(String.valueOf(getDayOfWeek[c.get(Calendar.DAY_OF_WEEK)-1]).equals(String.valueOf(DayOfWeek.SUNDAY))) {
sundays++;
}
if(m > monthEnd && y == yearEnd)
break;
}
}
System.out.println(sundays);
testCases--;
}while(testCases != 0 && testCases>=1 && testCases<=100);

}
}

示例输出为:

2
1900 1 1
1910 1 1
17
2000 1 1
2020 1 1
36

根据日历,1900年至1910年期间的星期日数量为18个,2000年至2010年期间的星期日数量为35个。

最佳答案

您实际上是在计算星期一的数量。 Calendar.SUNDAY 是第一个工作日常量,值为 1。

为什么不直接将 c.get(Calendar.DAY_OF_WEEK) 与 Calendar.SUNDAY 进行比较?

关于java - 项目欧拉 19 : Counting Sundays, Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35169983/

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