2020-8-14输出任意一年的日历(简洁版)

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%4
0&&year%100!=0||year%4000)?29:28;
}else{
allMoonDays+=31;
}
}
//计算出当前月是多少天
if(moon
4||moon6||moon9||moon11){
moonDays=30;
}else if(moon
2){
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).以此类推。

下次再写这种变量相加的循环时要注意,上一次运算的结果会作用到下一次运算

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值