Java循环综合练习四之日历打印
Java循环综合练习四之日历打印/*接收一个年份数(大于等于1900)和一个月份数,打印出该月的日历。日历输出格式如下:==================================================日一二三四五六1234567891011121314151617181920212223242526272829==================================
·
Java循环综合练习四之日历打印
接收一个年份数和一个月份数,打印出该月的日历。
日历输出样式如下图1所示:
如果输入的年份小于 1900,请输出:“请输入大于或等于1900的年份”。
如果输入的月份大于12或小于1,请输出:“请输入正确的月份”。
注意:日期之间以及星期之间使用 \t 分隔。
/*
接收一个年份数(大于等于1900)和一个月份数,打印出该月的日历。
日历输出格式如下:
==================================================
日 一 二 三 四 五 六
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
==================================================
其中日期上下的分隔符用的是50个=。
日期之间以及星期之间使用**\t分隔。
1900年1月1日是星期1。**
思路分析:
1.求1900年到输入年份之间的累计天数,其中闰年366天,平年365天;
2.求1月到输入月份之间的累计天数;
3.得到1900-1-1到输入年月之前所有天数,用总天数对7求余,对余数加1,4.该数值即为该月1号的星期;
5.判断输入月份有多少天;
6.控制格式打印日历。
*/
// 请在Begin-End间编写完整代码,类名请使用Calendar
/********** Begin **********/
// 导入 Scanner 类
import java.util.Scanner;
// 定义公开类 Calendar
public class Calendar{
// 定义主方法 main,在该方法中完成本关任务
public static void main(String [] args){
Scanner sin = new Scanner(System.in);
int y=sin.nextInt();
int m=sin.nextInt();
if(y<1900)
System.out.println("请输入大于或等于1900的年份");
else if(m>12||m<1)
System.out.println("请输入正确的月份");
else{
int sum=0; //记录一共多少天
int d=0; //标记某月有多少天
for(int i=1990;i<y;i++){ //计算整年的天数
if(i%4==0&&i%100!=0||i%400==0)
sum+=366;
else
sum+=365;
}
for(int i=1;i<=m;i++){ //计算整月的天数
switch(i){
case 2: if(y%4==0&&y%100!=0||y%400==0) d=29;
else d=28;break;
case 4:
case 6:
case 9:
case 11: d=30;break;
default : d=31;
}
if(i<m) //天数加到前一个月
sum+=d;
}
//System.out.println(sum);
int count=(sum+1)%7; //表示与星期一相隔几天;
//System.out.println(count);
System.out.println("==================================================");
System.out.println("日 一 二 三 四 五 六"); //复制测试结果中的格式
for(int i=1;i<=count;i++)
System.out.print("\t");
for(int i=1;i<=d;i++){
System.out.printf("%d\t",i);
if((i+count)%7==0)
System.out.println();
}
System.out.println();
System.out.println("==================================================");
}
}
}
/********** End **********/
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献4条内容
所有评论(0)