![]() | 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に挑戦してみてください。
*/