//在屏幕输入年份和月份,既可将当月日历打印出来
import java.util.*;
public class wannianli {
/**
* @param args
*/
public static boolean IsRunnian(int y) //判断y是否为闰年,是返回true,否返回false
{
if(y%4==0&&y%100!=0||y%400==0)
return true;
else
return false;
}
public static int daysYear(int y) //返回y年的总天数
{
if(IsRunnian(y))
return 366;
else
return 365;
}
public static int daysMonth(int y,int m) //返回y年m月的总天数
{
if(IsRunnian(y)&&m==2)
return 29;
if(!IsRunnian(y)&&m==2)
return 28;
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
return 31;
else
return 30;
}
public static void printdayline(int y,int m,int w) //打印y年m月的月份表
{ System.out.println("/n/n星期日/t星期一/t星期二/t星期三/t星期四/t星期五/t星期六");
for(int i=0;i<w;i++)
{if(w==7)
break;
System.out.print("/t");}
int days;
days=daysMonth(y,m);
for(int i=1;i<=days;i++)
{
if((i+w)%7!=0)
System.out.print(i+"/t");
else
System.out.print(i+"/n");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int year,month,sumdays=0;
System.out.print("*******************欢迎使用万年历************************/n");
Scanner input=new Scanner(System.in);
System.out.print("请选择年份: ");
year=input.nextInt();
System.out.print("/n请选择月份: ");
month=input.nextInt();
for(int i=1900;i<year;i++) //用两个FOR计算天数差
{
sumdays+=daysYear(i);
}
for(int i=1;i<month;i++)
{
sumdays+=daysMonth(year,i);
}
int weekday;
weekday=1+sumdays%7;
printdayline(year,month,weekday);
}//main
}//