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;
}
}
输出有点问题啊,为什么啊??
不明白
评论