万年历(挑战题)
比如给定输入2013年5月
思路:
1、求当前与1900相差的年的天数
2、求当前月份与1月份的相差天数
3、求出礼拜几
4、求当前月份的天数
5、打印出前面的空格数
6、记得换行
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入年份:");
int year = s.nextInt();
System.out.println("请输入月份:");
int month = s.nextInt();
int y = 1900;
int yearsum=0;
while(y<year){
yearsum+=365;
if(y%4==0&&y%100!=0||y%400==0){
yearsum+=1;
}
y++;
}
int m = 1;
int monthsum=0;
while(m<month){
switch(m){
case 4:
case 6:
case 9:
case 11:
monthsum+=30;
break;
case 2:
monthsum+=28;
if(year%4==0&&year%100!=0||year%400==0){
monthsum+=1;
}
break;
default:
monthsum+=31;
break;
}
m++;
}
int a =yearsum+monthsum;
int b =a%7+1;
if(b==7){
b=0;
}
int day;
switch(month){
case 4:
case 6:
case 9:
case 11:
day=30;
break;
case 2:
day=28;
if(year%4==0&&year%100!=0||year%400==0){
day+=1;
}
break;
default:
day=31;
break;}
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
for(int c=1;c<=b;c++){
System.out.print("\t");
}
for(int i=1;i<=day;i++){
System.out.print(i+"\t");
if((b+i)%7==0){
System.out.print("\n");
}
}
}
}