public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println(“你要查询的年份”);
int year=sc.nextInt();//记录要查询的年份
int allYearDays=0;//声明一个变量为1900年到当前年之前所有的天数
int allMoonDays=0;//声明一个变量为当前年的当前月份之前所有的天数
int remainder=0;//声明一个变量为余数
int moonDays=0;//声明一个变量为任意一个月的总天数
//计算出1900年到当前年之前所有的天数
for(int i=1900;i<year;i++){
allYearDays+=(i%40&&i%100!=0||i%4000)?366:365;
}
for(int moon=1;moon<=12;moon++){//用来输出一年的日历
//计算出当前年的当前月份之前所有的天数
allMoonDays=0;
for(int i=1;i<moon;i++){
if(i4||i6||i9||i11){
allMoonDays+=30;
}else if(i2){
allMoonDays+=(year%40&&year%100!=0||year%4000)?29:28;
}else{
allMoonDays+=31;
}
}
//计算出当前月是多少天
if(moon4||moon6||moon9||moon11){
moonDays=30;
}else if(moon2){
moonDays=(year%40&&year%100!=0||year%4000)?29:28;
}else{
moonDays=31;
}
//算出任意一个月的余数
remainder=(allMoonDays+allYearDays)%7;
//输出日历表
System.out.println();
System.out.println(moon+“月份”);
System.out.println(“星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日\t\n”);
//输出月份前面有几个空格
for(int i=0;i<remainder;i++){
System.out.print("\t");
}
//给月份的天数排序
for(int i=1;i<=moonDays;i++){
if((i+remainder)%7==0){
System.out.println(i+"\t");
}else{
System.out.print(i+"\t");
}
}
}
}
}
输出任意一年的日历为输出任意一个月的日历外套一个for循环;
特别注意: allMoonDays的值要归零,不然上一次运算的值,会作用的下一次运算中;
比如说不归零的情况:第一次循环运算出1月的总天数为31;第二次循环运算2月的总天数就变成了31+(31+30).以此类推。
下次再写这种变量相加的循环时要注意,上一次运算的结果会作用到下一次运算