CalcDate.isLeapYear()

------------------------------------

CalcDateクラスのメソッドisLeapYear()です。ある年が閏年かどうか調べます。

シグニチャは

boolean isLeapYear(int year)

になります。

------------------------------------

閏年の判定にはちゃんと規則があって

というのが原則です。したがって1816年、1996年、2040年などは閏年です。ただし例外があって

ということで、1900年、1700年などは閏年ではありません。しかし、何と例外の例外もあって

したがって、1600年、2000年は閏年です。

------------------------------------

上の三つの条件を並べると

となります。これをまともに判定しようと思うとif文の嵐になって大変ですが、よ〜く考えると閏年の判定条件は

にまとめられることが解ります。したがって、これを論理式で表して

return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;

と返してやれば、ある年が閏年かどうか解ります。

------------------------------------

前の項目へ次の項目へ

「メイキング・オブ・バイオリズム」のページへ