2022.11.16
Javaプログラミング
閏年(うるうどし)の判定 その2
閏年をプログラムで判定するには、以下の順番で判定していきます。
Javaソースコード
Uruudoshi2.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 029 030 031 032 033
import java.util.Calendar; public class Uruudoshi2 { // 閏年(うるうどし)判定メソッド static boolean isUruudoshi( int year ) { // Calendarクラスのインスタンス生成 Calendar calendar = Calendar.getInstance(); // year年2月1日を設定 calendar.set( year, Calendar.FEBRUARY, 1 ); // 最終日を取得 int daymax = calendar.getActualMaximum( Calendar.DAY_OF_MONTH ); // 最終日が29日なら閏年 if ( 29 == daymax ) return true; //最終日が29日でない場合は平年 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 Uruudoshi2
出力結果
西暦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
import java.util.Calendar;
003
public class Uruudoshi2 {
クラス名を、Uruudoshi2としています。
004 005 006
// 閏年(うるうどし)判定メソッド static boolean isUruudoshi( int year ) {
007 008
// Calendarクラスのインスタンス生成
Calendar calendar = Calendar.getInstance();
Calendar.getInstanceメソッド
public static Calendar getInstance()
・デフォルトのタイムゾーンおよびロケールを使用してカレンダを取得 パラメータ なし 戻り値 デフォルトロケールを持つデフォルトタイムゾーンの現在時刻に基づいたCalendar
010 011
// year年2月1日を設定
calendar.set( year, Calendar.FEBRUARY, 1 );
Calendarの月を表す値
public int JANUARY
・グレゴリオ暦とユリウス暦の年の1番目の月を示すMONTHフィールドの値です。 値 0
public int FEBRUARY
・グレゴリオ暦とユリウス暦の年の2番目の月を示すMONTHフィールドの値です。 値 1
public int MARCH
・グレゴリオ暦とユリウス暦の年の3番目の月を示すMONTHフィールドの値です。 値 2
public int APRIL
・グレゴリオ暦とユリウス暦の年の4番目の月を示すMONTHフィールドの値です。 値 3
public int MAY
・グレゴリオ暦とユリウス暦の年の5番目の月を示すMONTHフィールドの値です。 値 4
public int JUNE
・グレゴリオ暦とユリウス暦の年の6番目の月を示すMONTHフィールドの値です。 値 5
public int JULY
・グレゴリオ暦とユリウス暦の年の7番目の月を示すMONTHフィールドの値です。 値 6
public int AUGUST
・グレゴリオ暦とユリウス暦の年の8番目の月を示すMONTHフィールドの値です。 値 7
public int SEPTEMBER
・グレゴリオ暦とユリウス暦の年の9番目の月を示すMONTHフィールドの値です。 値 8
public int OCTOBER
・グレゴリオ暦とユリウス暦の年の10番目の月を示すMONTHフィールドの値です。 値 9
public int NOVEMBER
・グレゴリオ暦とユリウス暦の年の11番目の月を示すMONTHフィールドの値です。 値 10
public int DECEMBER
・グレゴリオ暦とユリウス暦の年の12番目の月を示すMONTHフィールドの値です。 値 11
013 014
// 最終日を取得 int daymax = calendar.getActualMaximum( Calendar.DAY_OF_MONTH );
Calendar.getActualMaximumメソッド
public int getActualMaximum( int field )
・指定のカレンダ・フィールドが取り得る最大値の取得 パラメータ field : カレンダ・フィールド 戻り値 指定されたカレンダ・フィールドの最大値
016 017
// 最終日が29日なら閏年
if ( 29 == daymax ) return true;
019 020
//最終日が29日でない場合は平年 return false;
024 025
// メイン public static void main( String[] args ) {
このmainメソッドからプログラムを実行します。
026 027
// 西暦1900年から2100年で、閏年を判定 for ( int year = 1900; year <= 2100; year ++ ) {
028 029 030
// 閏年かを判定 if ( isUruudoshi( year ) ) System.out.println( "西暦" + year + "年は、閏年" );
変数yearをisUruudoshiメソッドに渡して判定しています。
「閏年」と判定された場合、printlnメソッドでコンソール出力しています。
以上です。