0

我为一个日期做了一个类,在这个类中包含以下声明:

private int year;
private boolean leap = ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0));
public boolean isLeap() {return leap;}

然后(在不同的文件中)在 main 方法中:

String leapStr;
if (dateObject.isLeap()) {leapStr = "";}
else leapStr = "non-";
System.out.printf("Year %d is a %sleap year.", dateObject.getYear(), leapStr);

因此,由于某种原因,leapStr 永远不会是“非”,即使年份显然不是闰年。我完全不知道问题可能是什么。有任何想法吗?

4

2 回答 2

2

因为leap的值在​​对象创建时计算一次,并且此时year被初始化为默认值0。您应该在isLeap方法中计算leap。

于 2013-10-22T06:31:05.330 回答
2

您尚未初始化 year 因此 int 的默认值为 0 ,这就是您的条件始终返回 true (0%400 == 0) 的原因

于 2013-10-22T06:32:04.763 回答