/** *//** * @author bzwm * */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Calendar; import java.util.GregorianCalendar; publicclass CalendarTest { publicstaticvoid main(String[] args) throws IOException { BufferedReader in =new BufferedReader(new InputStreamReader(System.in)); System.out.print("請輸入一個年份:"); String years = in.readLine(); CalendarPrinter cp =new CalendarPrinter(years); cp.printCal(); } } class CalendarPrinter { privateint year; privatestaticfinalint monthCount =12; public CalendarPrinter(String years) { if (!years.matches("\\d{4}")) { System.out.println("year that inputted is illagel."); return; } year = Integer.parseInt(years); } publicvoid printCal() { // construct d as current date GregorianCalendar gCal =new GregorianCalendar(); //set year gCal.set(Calendar.YEAR, year); for (int month =0; month < monthCount; month++) { gCal.set(Calendar.MONTH, month); printOut(gCal); } } privatevoid printOut(Calendar cal) { int month = cal.get(Calendar.MONTH); // set cal to start date of the month cal.set(Calendar.DAY_OF_MONTH, 1); int weekday = cal.get(Calendar.DAY_OF_WEEK); // print heading System.out.println("Sun Mon Tue Wed Thu Fri Sat"); // indent first line of calendar for (int i = Calendar.SUNDAY; i < weekday; i++) System.out.print(""); do{ // print day int day = cal.get(Calendar.DAY_OF_MONTH); if (day >0) System.out.print(""+ day +""); else System.out.print(""+ day +""); // start a new line after every Saturday if (weekday == Calendar.SATURDAY) System.out.println(); // advance d to the next day cal.add(Calendar.DAY_OF_MONTH, 1); weekday = cal.get(Calendar.DAY_OF_WEEK); }while (cal.get(Calendar.MONTH) == month); // the loop exits when d is day 1 of the next month // print final end of line if necessary if (weekday != Calendar.SUNDAY) System.out.println(); } }