posts - 1,comments - 0,trackbacks - 0
          import javax.swing.JOptionPane;

          public class PrintCalendar {

              public static void main(String [] args){
                  String yearString = JOptionPane.showInputDialog(
                          "Enter full year (e.g.,2001):");
                  int year = Integer.parseInt(yearString);
                 
                  String monthString = JOptionPane.showInputDialog(
                          "Enter mouth as number between 1 and 12 ;");
                  int month = Integer.parseInt(monthString);
                 
                  printMonth(year,month);
              }
             
              public static void printMonth(int year, int month){
                  printMonthTitle(year, month);
                  printMonthBody(year, month);
              }
             
              public static void printMonthTitle(int year, int month){
                  System.out.println("        "+getMonthName(month)
                          +"   "+year);
                  System.out.println("--------------------------------");
                  System.out.println("  Sun Mon Tue Wed Thu Fri Sat");
              }
             
              public static void printMonthBody(int year, int month){
                  int startDay = getStartDay(year,month);
                  int numberOfDayInMonth = getNumberOfDayInMonth(year, month);
                  int i = 0;
                  for(i=0; i<startDay; i++)
                      System.out.print("    ");
                  for(i=1; i<=numberOfDayInMonth; i++){
                      if(i<10)
                          System.out.print("   "+i);
                      else
                          System.out.print("  "+i);
                      if((i+startDay)%7==0)
                          System.out.println();
                  }
              }
             
              public static String getMonthName(int month){
                  String monthName = null;
                  switch(month){
                  case 1: monthName = "January";break;
                  case 2: monthName = "February";break;
                  case 3: monthName = "March";break;
                  case 4: monthName = "April";break;
                  case 5: monthName = "May";break;
                  case 6: monthName = "June";break;
                  case 7: monthName = "July";break;
                  case 8: monthName = "August";break;
                  case 9: monthName = "September";break;
                  case 10: monthName = "October";break;
                  case 11: monthName = "November";break;
                  case 12: monthName = "December";break;
                  }
                  return monthName;
              }
             
              public static int getStartDay(int year, int month){
                  int startDay1800 = 3;
                  int totalNumberOfDays = getTotalNumberOfDays(year, month);
                  return (totalNumberOfDays + startDay1800)%7;
              }
             
              public static int getNumberOfDayInMonth(int year, int month){
                  int returnmonth = 0;
                  switch(month){
                  case 1:
                  case 3:
                  case 5:
                  case 7:
                  case 8:
                  case 10:
                  case 12: returnmonth = 31;break;
                  case 4:
                  case 6:
                  case 9:
                  case 11: returnmonth = 31; break;
                  case 2: returnmonth = isLeapYear(year) ? 29:28; break;
                  }
                  return returnmonth;
              }
             
              public static int getTotalNumberOfDays(int year, int month){
                  int total = 0;
                  for(int i = 1800; i<year; i++)
                      if(isLeapYear(i))
                          total += 366;
                      else
                          total += 365;
                  for(int i=1; i<month; i++){
                      total = total +getNumberOfDayInMonth(year, i);
                  }
                  return total;
              }
             
              public static boolean isLeapYear(int year){
                  return (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0));
              }
          }


          posted on 2010-04-25 11:10 ln_ydc 閱讀(115) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 松潘县| 木兰县| 芜湖市| 股票| 丰都县| 大连市| 哈巴河县| 犍为县| 夹江县| 含山县| 台东市| 萍乡市| 鹤岗市| 枣庄市| 酉阳| 平和县| 台湾省| 宿州市| 岱山县| 九寨沟县| 马公市| 高邑县| 阿拉善盟| 霍林郭勒市| 九龙县| 温宿县| 科技| 太保市| 中方县| 梅河口市| 盐城市| 通化县| 鲁甸县| 兴宁市| 伊金霍洛旗| 肃宁县| 来宾市| 桐庐县| 广州市| 云浮市| 靖边县|