皆さんこんにちは新米です。
今回はJavaを用いて、西暦XX年がうるう年であるか判定する方法を紹介していきます!
うるう年とはいつ起きる??
通常、2月は28日までですが、4年に1度の「うるう年」では2月に1日が追加され2月29日になります。
では、なぜうるう年はあるのでしょうか?
うるう年は暦を調節するためにあります。
現在の日本で使われている「太陽暦」の1年は、365日です。
これは地球が太陽のまわりを1周するのにかかる日数です。
しかし、実は1周回っていません!
1年につき約6時間ほど足りないのです。
つまり、4年経つと6時間×4=24時間になるため
4年に1度、1年の日数を増やします。
ただこの、調整も完璧ではありません。
1年にズレる正確な時間は5時間49分で、4年に1度
1日を増やすと11分ほどズレてしまいます。
さらなる微調整が必要なため、以下の条件が足されます。
正確なうるう年の計算方法は下記の3つの条件によって計算されます。
・ただし、4で割り切れても100で割り切れる場合を除く
・100で割り切れても400で割り切れる場合はうるう年とする
Javaでうるう年か判定する方法
先ほどのうるう年になる条件を踏まえて考えてみましょう。
うるう年の条件を1つ1つ記述すると以下のようになります。
[サンプル1]
int year = 2020; if (year % 4 == 0) { // うるう年であるかはまだ分からない。 if (year % 100 == 0) { // うるう年でない例外的な年である確率が高い。しかしまだ例外があるからそれを判定 if (year % 400 == 0) { // 4で割り切れて100でも割り切れて400でも割り切れるため、うるう年 System.out.print(year + "はうるう年です"); } else { // 4で割り切れて100でも割り切れて400では割り切れないため、平年 System.out.print(year + "は平年です"); } } else { // 4で割り切れて100で割り切れないため、うるう年 System.out.print(year + "はうるう年です"); } } else { // 4で割り切れないため、うるう年でない、平年 System.out.print(year + "は平年です"); } }
これでもうるう年の判定はできますが、長々しいですね…
もっと短いコードで出来ないか、フローチャートを参考にして考えてみましょう。
コード短縮のコツ!
「うるう年」になる条件の組み合わせを考えてみればよいわけです。条件判定は一通りではありませんが、例えば以下のように&&(AND)や||(OR)をす買ってみましょう。
[サンプル2]int year = 2020; if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { // うるう年である System.out.print(year +"はうるう年です"); } else { // うるう年でない System.out.print(year +"は平年です"); }

本当にうるう年か確認するのもアリです!
まとめ
いかがだったでしょうか?
このように、複数の判定条件があるものはプログラミングを記述する前に
あらかじめ判定条件を洗い出してから、コードを記述するように心がけましょう。

Pythonでも閏年の判定方法について記事にまとめてみたので
よかったら見てください!
【Python】 閏年判定を行う方法はisleap関数を使う!
コメント
[…] 【Java】うるう年か判定する方法今回はJavaを用いて、西暦XX年がうるう年で… […]