2022.09.28

Javaプログラミング

閏年(うるうどし)の判定

世界中で使われている「グレゴリオ」では、閏年うるう年)は以下のように決められています。

西暦年号が4で割り切れる年を「閏年」とする。ただし、100で割り切れて、400で割り切れない年は「平年」とする。

閏年をプログラムで判定するには、以下の順番で判定していきます。

西暦年号が400で割り切れる場合は、「閏年」とする。

西暦年号が100で割り切れる場合は、「平年」とする。

西暦年号が4で割り切れる場合は、「閏年」とする。

・上記の条件を1つも満たさなかった場合は、「平年」とする。

以下は判定例です。

西暦2000年は、400で割り切れるので「閏年」です。

西暦1900年は、400で割り切れず、100で割り切れるので「平年」です。

西暦2020年は、400で割り切れず、100で割り切れず、4で割り切れるので「閏年」です。

西暦2005年は、400で割り切れず、100で割り切れず、4で割り切れないので「平年」です。

Javaソースコード

西暦1900~2100年の間の閏年を見つけるソースコードです。

Uruudoshi.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
public class Uruudoshi {
	// 閏年(うるうどし)判定メソッド
	static boolean isUruudoshi( int year )
	{
		// 400で割り切れる西暦は「閏年」です。
		if ( 0 == ( year % 400 ) ) return true;

		// 100で割り切れる西暦は「閏年」ではありません。
		if ( 0 == ( year % 100 ) ) return false;

		// 4で割り切れる西暦は「閏年」です。
		if ( 0 == ( year % 4 ) ) return true;

		// 上記の条件を満たさない場合は「閏年」ではありません。
		return false;
	}


	// メイン
	public static void main( String[] args ) {
		// 西暦1900年から2100年で、閏年を判定
		for ( int year = 1900; year <= 2100; year ++ ) {
			// 閏年かを判定
			if ( isUruudoshi( year ) )
				System.out.println( "西暦" + year + "年は、閏年" );
		}
	}
}

実行結果

実行

C:\talavax\javasample>java Uruudoshi

出力結果

西暦1904年は、閏年
西暦1908年は、閏年
西暦1912年は、閏年
西暦1916年は、閏年
西暦1920年は、閏年
西暦1924年は、閏年
西暦1928年は、閏年
西暦1932年は、閏年
西暦1936年は、閏年
西暦1940年は、閏年
西暦1944年は、閏年
西暦1948年は、閏年
西暦1952年は、閏年
西暦1956年は、閏年
西暦1960年は、閏年
西暦1964年は、閏年
西暦1968年は、閏年
西暦1972年は、閏年
西暦1976年は、閏年
西暦1980年は、閏年
西暦1984年は、閏年
西暦1988年は、閏年
西暦1992年は、閏年
西暦1996年は、閏年
西暦2000年は、閏年
西暦2004年は、閏年
西暦2008年は、閏年
西暦2012年は、閏年
西暦2016年は、閏年
西暦2020年は、閏年
西暦2024年は、閏年
西暦2028年は、閏年
西暦2032年は、閏年
西暦2036年は、閏年
西暦2040年は、閏年
西暦2044年は、閏年
西暦2048年は、閏年
西暦2052年は、閏年
西暦2056年は、閏年
西暦2060年は、閏年
西暦2064年は、閏年
西暦2068年は、閏年
西暦2072年は、閏年
西暦2076年は、閏年
西暦2080年は、閏年
西暦2084年は、閏年
西暦2088年は、閏年
西暦2092年は、閏年
西暦2096年は、閏年

Javaソースコードの解説

001
public class Uruudoshi {

クラス名を、Uruudoshiとしています。

002
003
004
	// 閏年(うるうどし)判定メソッド
	static boolean isUruudoshi( int year )
	{

閏年かを判定するisUruudoshiメソッドです。西暦int型変数yearで渡し、「閏年」の場合true「平年」の場合falseを戻します。

005
006
		// 400で割り切れる西暦は「閏年」です。
		if ( 0 == ( year % 400 ) ) return true;

西暦を表す変数yearが400で割り切れる場合は「閏年」なので、return文trueを戻し、メソッドを抜けます。

008
009
		// 100で割り切れる西暦は「閏年」ではありません。
		if ( 0 == ( year % 100 ) ) return false;

西暦を表す変数yearが100で割り切れる場合は「平年」なので、return文falseを戻し、メソッドを抜けます。

011
012
		// 4で割り切れる西暦は「閏年」です。
		if ( 0 == ( year % 4 ) ) return true;

西暦を表す変数yearが4で割り切れる場合は「閏年」なので、return文trueを戻し、メソッドを抜けます。

014
015
		// 上記の条件を満たさない場合は「閏年」ではありません。
		return false;

西暦を表す変数yearが400、100、4で割り切れない場合はここまで到達します。

400、100、4で割り切れない場合、「平年」なので、return文falseを戻し、メソッドを抜けます。

020
	public static void main( String[] args ) {

このmainメソッドからプログラムを実行します。

021
022
		// 西暦1900年から2100年で、閏年を判定
		for ( int year = 1900; year <= 2100; year ++ ) {

for文で、変数yearを1900~2100年まで1ずつ増やしていくループを作成しています。

023
024
025
			// 閏年かを判定
			if ( isUruudoshi( year ) )
				System.out.println( "西暦" + year + "年は、閏年" );

変数yearをisUruudoshiメソッドに渡して判定しています。

「閏年」と判定された場合、printlnメソッドコンソール出力しています。

次のコンテンツ

Calendarクラスを利用して、閏年か平年かを判定するプログラムを紹介しています。

2022.11.16

次に読んでほしいコンテンツ

割り算で割り切れずに残った端数を剰余(余り)といいます。この剰余の計算をJavaのソースコードを使って解説しています。

2020.03.23

メソッドの定義方法を詳しく解説しています。Javaのサンプルソースコードを使った説明もあります。

2020.03.23

Calendarクラスを利用して、閏年か平年かを判定するプログラムを紹介しています。

2022.11.16

広告