java カレンダー作成

実現したいこと

うるう年を考慮して、年、月、日が変更するJavaのカレンダープログラムを作成したい

前提

・整数文字列args[0],args[1], args[2]で与えられるとする
・年月日の曜日と年初からの日数を表示する
(今回は、2023年から2026年に限定したカレンダーを作成したい)

発生している問題・エラーメッセージ

理想 > java test2023 2023 9 14 2023:9:14:Thu:(257/365) 実際 > java test2023 2023 9 14 2023:9:14:Thu:(257/365) 2024:9:14:Tue:(514/365) 2025:9:14:Sun:(771/365) 2026:9:14:Fri:(1028/365) 問題点1 指定した年数の情報だけ出したいのですが、23年~26年までの結果が1行で表示されます。 問題点2 日数カウントが年を越すごとに増えてしまいます。

該当のソースコード

class test2023{
public static void main(String[] args){

int i;
int[] y ={0,2023,2024,2025,2026};
int[] m ={0,31,28,31,30,31,30,31,31,30,31,30,31};

//2023年は1日が日曜日なので、Sunが配列の1番目になるよう曜日を配置
String[] week ={"Sat","Sun","Mon","Tue","Wed","Thu","Fri"};
int year =Integer.parseInt(args[0]);//年
int month =Integer.parseInt(args[1]);//月
int day =Integer.parseInt(args[2]);//日

int count =0;//年初からの日数

//うるう年(2024)か、それ以外の年で場合分け
for(i=y1;i<=y2;i++){
if(i%400 == 0 || i%4 == 0 && i%100 != 0){
}

//2023の場合
if int year = 2023;
for(i=1;i<month;i++){//前月までの日数を加える
count =count + m[i];
}
count =count + day;
System.out.println(year+":"+month+":"+day+":"+week[count%7]+":("+count+"/365)");
break;
}

//2025の場合
int year = 2025
count = 0
for(i=1;i<month;i++){//前月までの日数を加える
count =count + m[i];
}
count =count + day;
System.out.println(year+":"+month+":"+day+":"+week[count%7+2]+":("+count+"/365)");
break;
}
//うるう年のせいで、日が+1、曜日が+1される。

//2026
int year = 2026
count = 0
for(i=1;i<month;i++){//前月までの日数を加える
count =count + m[i];
}
count =count + day;
System.out.println(year+":"+month+":"+day+":"+week[count%7+2]+":("+count+"/365)");
break;
}

### 補足情報(FW/ツールのバージョンなど) forを使って順番に判別することには気づいたのですが、 どのように設定すればよいかわからないため、ご教示ください。 よろしくお願いいたします。

コメントを投稿

0 コメント