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

标签 java calendar dayofweek

我正在使用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/

相关文章:

java - PDF-Checkbox - 在没有 JavaScript 的情况下选中一个并取消选中另一个

java - getDeclaredField(String) 与 getMethod(String) 对于 bean 中的私有(private)字段

python - 从 Pandas 中的 UTC_TIME 系列获取星期几

java - 将自定义对话框设置为 Activity 一次

javascript - 在 Liferay 7.2 中实现自动保存网页内容为草稿

java - 等待系统时间继续申请

java - 获取 Java 月份的名称

javascript - 删除和添加回元素后,JQuery 单击功能不起作用

java - 如何使用 Locale 和 GregorianCalendar 在 Java 中获取给定语言的工作日名称?

javascript - 当日期处于不同月份时,如何获取本周的第一天和最后一天?