日付・時間へ戻る | サンプル集目次へ戻る

実行結果
MondayCalendarサンプルソース
「週の頭は月曜だ!」という月曜始まりカレンダー派に送るプログラムです。java.util.Calendarクラスを利用して、日付や曜日に関する情報を取得しよう。
MondayCalendar.java
/**
 * 愛のJava256本ノック for Java 5.0
 * Javaサンプルソース ver0.2C "MondayCalendar"
 * MondayCalendar.java 「月曜日から始まるカレンダーを作成」
 *
 * 2005/09/23 制作:安永ノリカズ
 *
 * 【コンパイル&実行方法】
 *     >javac MondayCalendar.java
 *     >java MondayCalendar
 * 【キーワード】
 *     Staticインポート, java.util.Formatterクラス, 
 * 【試してみよう】
 *     月曜以外の曜日から始まるようにする。
 */
import java.lang.String;
import java.lang.System;
import java.util.Calendar;
import static java.util.Calendar.YEAR;
import static java.util.Calendar.MONTH;
import static java.util.Calendar.DAY_OF_MONTH;
import static java.util.Calendar.DAY_OF_WEEK;
import static java.util.Calendar.MONDAY;

public class MondayCalendar {
    public static void main(String[] A00) {
        Calendar L00 = Calendar.getInstance();
        int L01 = L00.get(YEAR);
        int L02 = L00.get(MONTH);
        L00.set(L01, L02, 1);
        int L03 = L00.getActualMaximum(DAY_OF_MONTH);
        int L04 = L00.get(DAY_OF_WEEK);

        System.out.printf(" 〜 %d年%2d月 〜 %n", L01, L02 + 1);
        System.out.println("月 火 水 木 金 土 日");

        // 空白の個数を求める
        int L06;
        if (L04 < MONDAY) {
            L06 = (L04 + 7) - MONDAY;
        } else {
            L06 = L04 - MONDAY;
        }

        int L05 = 0;

        for (int L07 = 0; L07 < L06; L07++) {
            System.out.print("   ");
            L05++;
        }

        for (int L08 = 1; L08 <= L03; L08++) {
            if (L05 < 6) {
                System.out.printf("%2d ", L08);
            } else {
                System.out.printf("%2d%n", L08);
            }
            L05 = ++L05 % 7;
        }
    }
}

/* ■ クラスの外でちょっと一言 ■
以前、ヨーロッパを旅行したときに、お土産にカレンダーを買ったんですが、そ
のカレンダーは、月曜から始まって日曜で終わる曜日の配列になってました。確
かに「月曜仕事始め、土日は週末」というのが実際の感覚ですよね。で結局、そ
の配列が気に入って、誰にもあげずに自分で使うことにしました。このプログラ
ムはそのカレンダーを再現しています。

プログラム自体はそれほど長くないんですが、処理のロジックを解読するのは難
しいかもしれません。「その月の1日の曜日から空白の個数を求める」「7つ数字
を出力するごとに改行を入れる」というのがヒントです。

世の中には様々な就業形態の人がいると思うので「自分は水曜日が週の始まり
だ!」って人はWednesdayCalendarに挑戦してみてください。
 */
↑ 先頭へ戻る

安永ノリカズのゲーム制作&Javaサンプル集 / Java初心者用サンプル集『愛のJava256本ノック』