- ベストアンサー
カレンダーの表示部分をどうしたらいいか困っています
- Javaでcalコマンドと同じ働きをするカレンダーを作成しています。
- 1753年以降でmonth yearと入力するとyear年month月のカレンダーを表示するのには成功したが、1年から1752年にも拡張し、yearと入力するとyear年12ヶ月分のカレンダーを表示するようにしようとしている。
- 困っている点は、1年1月1日のカレンダーの表示がおかしいことと、カレンダーを横に3つ並べて表示できないこと。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>4年に1度だけだとそれこそおかしくなる気がする おかしくなるので、グレゴリオ暦に変更があったのです。 変更前の日付の付け方はそのままなので、変更前の日付の計算は ユリウス暦に従って計算する必要があります。 国によって変更の時期や変更前の暦が異なる(日本は1873年(明治6年)1月1日から。 明治5年12月は2日までしかない)ため、本来ならそれも考慮する必要があります。 ご自分が何を作ろうとしているのか、ちゃんと調べていますか? ネットで検索すればすぐに出てくるはすですよ。 ユリウス暦についてはOKWave内にも話題がありましたよ。
その他の回答 (1)
- deadlock
- ベストアンサー率67% (59/87)
研修か課題っぽいので、コードは書きません。 ロジックでおかしいところは、 ・曜日の算出 経過日数の補正はやっているようですが、曜日の初期値が当初のものを引きずっています。 1年1月が土曜日 を基準に、曜日の初期値を見直してください。 ・ユリウス暦のうるう年判定がおかしい。 ユリウス暦では「4年に一度うるう年」で、100年や400年の判定はありません。 ・ユリウス/グレゴリオ暦 の境界月 1752年9月は「19日まで」ではなく「2日の次の日は14日」です。 表示は、以下のどちらかを念頭に、全体の流れを考え直してみてください。 ・各行を一度変数に格納して、最後にまとめて出力 ・年月と第何週単位で計算して、横一列の文字列を生成できるようにする あとは…メソッド名、定数などの大文字、小文字、単語の区切り方、 変数の宣言にはJavaの標準規約がありますから、それに従って書きましょう
補足
ありがとうございます。曜日の初期値は見直してみます。 >ユリウス暦では「4年に一度うるう年」で、100年や400年の判定はありません。 一応今使われているのは4、100、400を使って判定している暦ですよね。4年に1度だけだとそれこそおかしくなる気がするのですが。その辺をもう一度説明していただけると助かります。 >1752年9月は「19日まで」ではなく「2日の次の日は14日」です。 1752年は9月は19日あるので計算の都合上そうしているのですが、それだとカレンダー表示が上手くいかないのは一応了承済みです。とりあえずこの月のカレンダーは特殊なので、配列に保存して表示させようと思います。
お礼
>変更前の日付の付け方はそのままなので、変更前の日付の計算はユリウス暦に従って計算する必要があります。 一応調べたのですが、よく考えればそういう流れで今のうるう年になったんですよね…。思い込んでいました。 ちなみに、私の場合日本のことまでは考えなくて構わないので、そこは心配する必要はありません。 重ね重ね、ありがとうございます。