正文

显示日历2009-09-24 19:04:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/shao/48080.html

分享到:

 

 

 

import javax.swing.JOptionPane;
public class PrintCalendar {
 public static void main(String[] args)
 {
  String stringYear = JOptionPane.showInputDialog("Input the year(e.g. 2009):");
  int year = Integer.parseInt(stringYear);
  String stringMonth = JOptionPane.showInputDialog("Input the month:");
  int month = Integer.parseInt(stringMonth);
  
  printMonth(year,month);
 }
 
 static void printMonth(int year,int month)
 {
  printMonthTitle(year,month);
  printMonthBody(year,month);
 }
 
 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 ");
 }
 
 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;
 }
 
 static void printMonthBody(int year,int month){
  int startDay = getStartDay(year,month);
  
  for(int i=1;i<=startDay;i++)
   System.out.print("  ");
  
  int monthDays = getMonthDays(year,month);
  for(int i=1; i<=monthDays; i++){
   if(i<10) 
    System.out.print("   "+i);
   else
    System.out.print("  "+i);
   if((i+startDay)%7 == 0)
    System.out.println();
  }
  System.out.println();
 }
 
 static int getStartDay(int year,int month)
 {
  int startDay1800 = 3;
  int total = getTotalDays(year,month);
  return (total+startDay1800) % 7;
 }
 
 static int getTotalDays(int year,int month){
  int totalDays = 0;
  for(int i=1800;i<year;i++){
   if(isLeap(year))
    totalDays += 366;
   else
    totalDays += 365;
  }
  
  for(int i=1;i<month;i++)
   totalDays += getMonthDays(year,month);
  return totalDays;
 }
 
 static boolean isLeap(int year)
 {
  return year % 400 ==0||(year % 4 ==0 && year % 100 != 0);
 }
 
 static int getMonthDays(int year,int month)
 {
  if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
   return 31;
  if(month==4||month==6||month==9||month==11)
   return 30;
  if(month==2)
   return isLeap(year)? 29:28;
  
  return 0;
 }
}

 

  输出有点问题啊,为什么啊??

  不明白

阅读(1284) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册