我正在阅读《 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/ 问候。