JAVA用for循环制作简单的日历
程序员文章站
2022-05-02 08:19:58
...
JAVA用for循环制作简单的日历
//已知1900.1.1日是周一,输入年,月 --> 系统自带打印当月的日历
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份");
int year = sc.nextInt();
System.out.println("请输入月份");
int month = sc.nextInt();
int days = 0;//设定一个总天数
//第一步,通过数学方法计算几号(num)--星期几(week)之间的关系,设天数为days(这里指从1900.1.1开始计算得天数)
//days%7---->week;(计算天数需要先计算年份,再计算月份,最后计算天数)
for(int i=1900;i<year;i++){
//闰年+366
if((i%4==0&&i%100!=0)||(i%400==0)){
days +=366;
}else{
//平年
days+=365;
}
}
//计算月份
for(int i=1;i<month;i++){
switch (i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days+=31;
break;
case 4:
case 6:
case 9:
case 11:
days+=30;
break;
default:
if((year%4==0&&year%100!=0)||(year%400==0)){
days+=29;
}else {
days+=28;
}
break;
}
}
//将天数+1,例9.30 加1天就是10.1日,就可以计算每月的1号是星期几
days = days+1;
//得到天数之后,计算星期几
int weeks = days%7;
//制作日历头部
System.out.println("日\t一\t二\t三\t四\t五\t六");
//根据星期几进行天数排版
//先判断这个月有几天
int nowmonth = 1;
if (month==1||month==3||month==5||month==7||month==8||month==10||month==12) {
nowmonth=31;
}else if(month==4||month==6||month==9||month==11){
nowmonth=30;
}else{
if((year%4==0&&year%100!=0)||(year%400==0)){
nowmonth=29;
}else {
nowmonth=28;
}
}
//得到星期几后,需要在日历前边补空格
for(int i=1;i<=weeks;i++){
System.out.print("\t");
}
//在进行排版
for (int i=1;i<=nowmonth;i++){
System.out.print(i+"\t");
if ((i+weeks)%7==0){
System.out.println();
}
}
注意,这个编辑器是IDEA,其中一个\t 占位4个
在eclipse中\t 占位8个
输出结果为: