/****************************/ /* 特定月のカレンダー表示 */ /* coded by Y.Suganuma */ /****************************/ import java.io.*; /* クラスDateの定義 */ class Date { private int year; // 年 private int month; // 月 private int day; // 日 private int tu; // 西暦1年1月1日からの通算日 // コンストラクタ Date() {} // コンストラクタ(年月日入力) Date(int n, int m, int l) { int i1; year = n; month = m; day = l; tu = day; for (i1 = 1; i1 < year; i1++) { if ((i1%4 == 0 && i1%100 != 0) || i1%400 == 0) tu += 366; else tu += 365; } for (i1 = 1; i1 < month; i1++) { if (i1 == 2) { if ((year%4 == 0 && year%100 != 0) || year%400 == 0) tu += 29; else tu += 28; } else { if (i1 == 4 || i1 == 6 || i1 == 9 || i1 == 11) tu += 30; else tu += 31; } } } // コンストラクタ(通算日入力) Date(int n) { int k = 0, sw = 0; tu = 0; year = 1; month = 1; while (sw == 0) { if ((year%4 == 0 && year%100 != 0) || year%400 == 0) k += 366; else k += 365; if (k < n) { tu = k; year++; } else sw = 1; } while (sw > 0) { if (month == 2) { if ((year%4 == 0 && year%100 != 0) || year%400 == 0) k = 29; else k = 28; } else { if (month == 4 || month == 6 || month == 9 || month == 11) k = 30; else k = 31; } if (tu+k < n) { tu += k; month++; } else { sw = 0; day = n - tu; tu += day; } } } // -演算 int minus(Date b) { return tu - b.tu; } } /* main */ public class Test { public static void main(String args[]) throws IOException { int year, month, day = 1, m = 1, n, k, i1; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); // 西暦元年1月1日からの通算日 System.out.print("年は? "); year = Integer.parseInt(in.readLine()); System.out.print("月は? "); month = Integer.parseInt(in.readLine()); Date a = new Date (year, month, day); Date b = new Date (1, 1, 1); n = a.minus(b); // 1日の曜日の決定 n = n % 7 + 1; if (n == 7) n = 0; // 出力 System.out.println(" " + year + "年" + month + "月"); System.out.println(" 日 月 火 水 木 金 土"); if (month == 2) { if ((year%4 == 0 && year%100 != 0) || year%400 == 0) k = 29; else k = 28; } else { if (month == 4 || month == 6 || month == 9 || month == 11) k = 30; else k = 31; } for (i1 = 0; i1 < 7; i1++) { if (i1 >= n) { System.out.print(" "); if (m > 9) System.out.print(m); else System.out.print(" " + m); m++; } else System.out.print(" "); } System.out.println(); while (m <= k) { for (i1 = 0; i1 < 7 && m <= k; i1++) { System.out.print(" "); if (m > 9) System.out.print(m); else System.out.print(" " + m); m++; } System.out.println(); } } }
/****************************/ /* 任意の数のファイルの連結 */ /* coded by Y.Suganuma */ /****************************/ import java.io.*; public class Test { public static void main(String args[]) throws IOException { int i1; String line; for (i1 = 0; i1 < args.length; i1++) { BufferedReader in = new BufferedReader(new FileReader(args[i1])); while ((line = in.readLine()) != null) System.out.println(line); in.close(); } } }
菅沼ホーム | 演習解答例目次 | 本文目次 | 付録 | 索引 |