0

日付のクラスを作成しましたが、このクラス内に次の宣言があります。

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

そして、(別のファイルで)メインメソッド内で:

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

そのため、何らかの理由で、その年が明らかに閏年ではない場合でも、 jumpStr が「非」になることはありません。何が問題なのかまったくわかりません。何か案は?

4

2 に答える 2

2

うるうの値はオブジェクトの作成時に一度計算され、その時点で年はデフォルト値の 0 で初期化されるためです。うるうは isLeap メソッドで計算する必要があります。

于 2013-10-22T06:31:05.330 に答える
2

年を初期化していないため、 int のデフォルト値は 0 になります。これが、条件が常に true を返す理由です (0%400 == 0)

于 2013-10-22T06:32:04.763 に答える