繁体   English   中英

为什么我的布尔值始终为真?

[英]Why is my boolean always true?

我为日期创建了一个类,该类中包含以下声明:

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);

因此,出于某种原因,即使该年份显然不是a年,也不会让它成为“非”。 我完全不知道问题可能是什么。 有任何想法吗?

因为of跃的值是在对象创建时计算一次的,并且那一年将使用默认值0初始化年份。因此,应在isLeap方法中计算leap跃。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM