タイトルの件につきまして、Javaで2000年から現在年までの年月日の配列を作成したいと考えております。
【期待する出力結果】
days[0] = "2000年1月1日"
days[1] = "2000年1月2日"
days[2] = "2000年1月3日"
~
days[?] = "2019年12月31日"
自身で試作したもの
なんとなくのイメージで下記コードを書いているのですが、どうにも効率が悪そうであり、
もっと簡単に書くことは出来ないかと試行錯誤しています。
(動作させる環境作成途中の為、未実行かつ期待結果が出力されるか未確認です。すみません。)
Java
1 // 2000年からの年数算出 2 Calendar calendar= Calendar.getInstance(); 3 int years = calendar.get(Calendar.YEAR) - 2000; 4 // 2000年~現在年までの日付を入れる配列を生成。うるう年を考慮して一旦(test / 4) + 1を追加 5 String days[] = new String[years * 365 + (years / 4) + 1]; 6 // 配列のインデックス 7 int index = 0; 8 for (int year = 0; year <= years; year++) { 9 for (int month = 0; month < 12; month++) { 10 for (int day = 0; day < 31; day++) { 11 // 2月の場合、うるう年を考慮する。 12 if (month == 1) { 13 switch (day) { 14 case 28: 15 case 29: 16 case 30: 17 if (year % 4 != 0) { 18 days[index] = (year + 2000 + "年") + (month + 1 + "月") + (day + 1 + "日"); 19 index += 1; 20 } 21 break; 22 default: 23 days[index] = (year + 2000 + "年") + (month + 1 + "月") + (day + 1 + "日"); 24 index += 1; 25 } 26 } else { 27 switch (day) { 28 case 30: // 2,4,6,9,11月以外は31日まで配列に追加する。 29 if (year % 4 != 0 && month != 1 && month != 3 && month != 5 && month != 8 && month != 10) { 30 days[index] = (year + 2000 + "年") + (month + 1 + "月") + (day + 1 + "日"); 31 index += 1; 32 } 33 break; 34 default: 35 days[index] = (year + 2000 + "年") + (month + 1 + "月") + (day + 1 + "日"); 36 index += 1; 37 } 38 } 39 } 40 }
上記、アドバイスや指摘など頂けると助かります。
宜しくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/03 01:50
2019/09/03 03:06
2019/09/03 05:23
2019/09/03 05:31