为什么我的布尔值总是正确的?

时间:2013-10-22 06:25:41

标签: java boolean

我为一个日期创建了一个类,在这个类中有以下声明:

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永远不会“非”,即使这一年显然不是闰年。我完全不知道问题是什么。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

因为在创建对象时计算了一次跳跃的值,并且在那一刻初始化年份,默认值为0。 你应该用isLeap方法计算跳跃。

答案 1 :(得分:2)

你没有初始化年份因此int的默认值将为0,这就是为什么yor条件总是返回true(0%400 == 0)