java - Java 中的欧拉计划 #19

标签 java project

您已获得以下信息,但您可能更愿意自己做一些研究。

1 Jan 1900 was a Monday.
Thirty days has September,
April, June and November.
All the rest have thirty-one,
Saving February alone,
Which has twenty-eight, rain or shine.
And on leap years, twenty-nine.
A leap year occurs on any year evenly divisible by 4, but not on a century unless it is divisible by 400.

在二十世纪(1901 年 1 月 1 日到 2000 年 12 月 31 日)中,每个月的第一天有多少个星期日?

解决方案:

我的以下逻辑给了我 173 个星期日,而实际上有 171 个星期日!额外的 2 天是从哪里来的?

public static void main(String args[]) {

    Date startDate = new Date(1901, Calendar.JANUARY, 01);
    Date endDate = new Date(2000, Calendar.DECEMBER, 31);

    checkSundays(startDate, endDate);
}

private static void checkSundays(Date start, Date end) {
    int dayNum;

    Calendar startDate = Calendar.getInstance();
    startDate.setTime(start);
    System.out.println(startDate.getTime());

    Calendar endDate = Calendar.getInstance();
    endDate.setTime(end);
    System.out.println(endDate.getTime());
    int count = 0;

    while (startDate.before(endDate)) {
        for (int i = 1; i < 13; i++) {
            dayNum = startDate.get(Calendar.DAY_OF_WEEK);
            if (dayNum == 1) {
                count++;
            }

            System.out.println(startDate.getTime());
            startDate.add(Calendar.MONTH, 1);

        }
            System.out.println("Count " + count);

    }
}

最佳答案

您的以下代码使用了 Date 的弃用构造函数

Date startDate = new Date(1901, Calendar.JANUARY, 01);
System.out.println(startDate);

这是不正确的,它会打印

Thu Jan 01 00:00:00 IST 3801

所以使用Calendar构造Date,

    Calendar startDateCal = createDateInstance(0,1901,1)

    Calendar endDateCal = createDateInstance(11,2000,13)

和一个工厂方法

public static Date createDateInstance(int month, int year, int date){
  Calendar cal= Calendar.getInstance();
  cal.set(Calendar.YEAR, year);
  cal.set(Calendar.MONTH, month);
  cal.set(Calendar.DATE, date);

  return cal.getTime();

}

参见 your working code

关于java - Java 中的欧拉计划 #19,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11292220/

相关文章:

java - Eclipse 从 CMD 提示符找到 Java,但不能从桌面单击找到 Java

github - GitHub 项目和里程碑之间有什么区别/关系?

java - 如何用Java打印Dijkstra算法的完整路径

java - 当有足够的空间来显示内容时,JScrollPane 不会顶部对齐

java - 在 Java 中创建自定义注释

java - Elasticsearch 处理缺失索引

ios - 这两个部署目标有什么区别?

c# - 使用 jquery/ajax 在同一解决方案的另一个项目中调用 c#(或任何其他 .net)函数

java - 从java中的另一个项目访问包和类文件

java - "The Local variable ' 名称 ' may not have been initialized"错误