给你一个代码吧:
import java.util.Scanner;
public class wnl {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
int totalDay=0; //计算总天数
int dayOfWeek; //保存当月第一天是星期几
int day=0 ; //当月的天数
int dayOfYear=0; //保存用户输入的年月之前的天数
Scanner cs=new Scanner(System.in);
System.out.print("请输入年:");
int year=cs.nextInt();
System.out.print("请输入月:");
int month=cs.nextInt();
boolean bool=false;
// 判断输入的年份是否是闰年备用
if(year%4==0&&year%100!=0||year%400==0){
bool=true;
}
// 计算出到用户输入的年份1月1日之前的总天数
for(int i=1900;i
totalDay+=366;
}else{
totalDay+=365;
}
}
for(int i=1;i<=month;i++){
switch(i){ //根据月不同给day赋值进行计算
case 1: //同时day还会用于保存当月天数后面的输出
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:day=31;break;
case 4:
case 6:
case 9:
case 11:day=30;break;
// 根据是否闰年来决定2月多少天
case 2:if(bool){
day=29;
break;
}else{
day=28;
break;
}
//在获得输入月份之前所有天数的同时
//还获得了输入月份的天数备用
}
if(i
} //数进行加合
}
//将本年的天数加在之前计算的总天数上
totalDay+=dayOfYear;
// 把总天数对7取余计算出当月第一天是星期几
dayOfWeek=(1+totalDay)%7;
System.out.println("星期天\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
// 输出空格
for(int i=0;i
}
for(int i=1;i<=day;i++){
//控制每到星期6就换行
//原理为总天数加上当月天数对7取余
if((totalDay+i)%7==6){
System.out.print(i+"\n");
}else{
System.out.print(i+"\t");
}
}
}
}