【Java】うるう年の判定のサンプルコード


うるう年の判定方法のサンプルコードを以下に書きます。

うるう年とは

「4年かそのぐらいの間隔で1年が365日ではなく366日になる年」とふわっと知っていたわけですが
厳密には

(1)西暦年号が4で割り切れる年をうるう年とする。
(2)(1)の例外として、西暦年号が100で割り切れて400で割り切れない年は平年とする。
引用:国立天文台(NAOJ)

だそうです。平年とは365日の年のことです。
うるう年はオリンピックと同じ周期なのでオリンピックイヤーと呼ばれることもあるようです。(ただしうるう年ではないときもあるためこの表現は正確ではない)

条件式を書いてみる

以下の条件式を書いてみます。
・西暦年号が4で割り切れる年
・ただし西暦年号が100で割り切れて400で割り切れない年は平年(100で割り切れない場合、100で割り切れても400で割れる場合はうるう年)


if (year % 4 == 0) {

	if ((year % 100) == 0) {

		if ((year % 400) == 0) {
			// うるう年
		}

	} else {
		// うるう年
	}

}

実行してみる

上記の条件に以下のよう肉付けをしてやってみました。

class Sample{

	public static void main(String[] args) {

		// String→intへ変換
		int year = Integer.valueOf(args[0]);

		boolean check = false;

		if (year % 4 == 0) {

			if ((year % 100) == 0) {

				if ((year % 400) == 0) {
					// うるう年
					check = true;
				}

			} else {
				// うるう年
				check = true;
			}

		}
		
		System.out.println(check ? "うるう年だよー" : "うるう年じゃないよー");

	}

}

▼実行結果

2020年が「うるう年だよー」と表示され、他の年は「うるう年じゃないよー」と表示されました。

まとめ

・西暦年号が4で割り切れる年で100で割り切れない場合、100で割り切れても400で割れる場合はうるう年

今回はあまりまとめることはないです。
こういうのぱっと書いてって言われてもなかなか書けないものだと思いますのでこれを機に覚えておきたいですね。

  • このエントリーをはてなブックマークに追加

PAGE TOP