当前位置: 首页 > 面试题库 >

用于计算Le年的Java代码

戚宏浚
2023-03-14
问题内容

我正在阅读《 Java的艺术与科学》这本书,它展示了如何计算a年。该书使用了ACM Java Task Force的库。

这是这些书使用的代码:

import acm.program.*;

public class LeapYear extends ConsoleProgram {
    public void run()
    {

        println("This program calculates leap year.");
        int year = readInt("Enter the year: ");     

        boolean isLeapYear = ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0));

        if (isLeapYear)
        {
            println(year + " is a leap year.");
        } else
            println(year + " is not a leap year.");
    }

}

现在,这就是我计算calculated年的方式。

import acm.program.*;

public class LeapYear extends ConsoleProgram {
    public void run()
    {

        println("This program calculates leap year.");
        int year = readInt("Enter the year: ");

        if ((year % 4 == 0) && year % 100 != 0)
        {
            println(year + " is a leap year.");
        }
        else if ((year % 4 == 0) && (year % 100 == 0) && (year % 400 == 0))
        {
            println(year + " is a leap year.");
        }
        else
        {
            println(year + " is not a leap year.");
        }
    }
}

我的代码有什么问题吗?还是我应该使用本书提供的代码?

编辑::上面的两个代码都工作正常,我想问的是,哪种代码是计算the年的最佳方法。


问题答案:

正确的实现是:

public static boolean isLeapYear(int year) {
  Calendar cal = Calendar.getInstance();
  cal.set(Calendar.YEAR, year);
  return cal.getActualMaximum(Calendar.DAY_OF_YEAR) > 365;
}

但是,如果您要重新发明轮子,那么:

public static boolean isLeapYear(int year) {
  if (year % 4 != 0) {
    return false;
  } else if (year % 400 == 0) {
    return true;
  } else if (year % 100 == 0) {
    return false;
  } else {
    return true;
  }
}


 类似资料:
  • 问题内容: 这是家庭作业,我已经获得了成绩,但是我没有在代码中实现leap年。这是一个简单的程序,可以根据用户输入显示一个月内的数字。我唯一不知道的是一种实现implement年的方法,这种writing年将在2月获得29天而不是28天,而无需编写多条语句。当然有更简单的方法吗?这是代码: 问题答案: 如果使用,则可以执行以下操作 确定给定年份是否为is年。如果给定的年份是a年,则返回true。要

  • 键入结束年度:2013 2008年是闰年 2012年是闰年 非常感谢您的回复!帮助我学到了比我的讲师实际教的更多的东西:)

  • 代码(由于测试很小,我包含了一个完整的工作程序):

  • 问题内容: 考虑到他们的DOB格式为dd / mm / yyyy,我正在寻找一种计算人的年龄的方法。 我一直在使用以下功能,该功能在几个月内都可以正常工作,直到某种故障导致while循环永远不会结束并且使整个站点陷入瘫痪。由于每天有近100,000个DOB多次通过此功能,因此很难确定造成此问题的原因。 有人有更可靠的年龄计算方法吗? 编辑:此函数的某些时间似乎可以正常工作,但对于14年9月14日的

  • 问题内容: 我想以Java方法的整数形式返回年龄(以年为单位)。我现在所拥有的是getBirthDate()返回Date对象(带有出生日期;的以下内容: 但是由于不赞成使用getYear(),所以我想知道是否有更好的方法可以做到这一点?我什至不确定这是否能正常工作,因为我还没有进行单元测试。 问题答案: JDK 8使这个变得轻松而优雅: 一个JUnit测试以证明其用法: 现在每个人都应该使用JDK

  • 问题内容: 我有一些Java代码,我希望以此来衡量经验计算的复杂性。有一个趋势分析工具,将已编译的程序作为输入。 是否有与趋势教授相似的工具作为已编译Java程序的输入? 问题答案: 声纳通常使用:http://www.sonarsource.org/ 问候。