我为一个日期创建了一个类,在这个类中有以下声明:
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永远不会“非”,即使这一年显然不是闰年。我完全不知道问题是什么。有什么想法吗?
答案 0 :(得分:2)
因为在创建对象时计算了一次跳跃的值,并且在那一刻初始化年份,默认值为0。 你应该用isLeap方法计算跳跃。
答案 1 :(得分:2)
你没有初始化年份因此int的默认值将为0,这就是为什么yor条件总是返回true(0%400 == 0)