最近学习Java循环,做了个题目练习一下,记录如下:
import java.util.Scanner;
public class MyCalendar {
public static void main(String[] args) {
//已知1900.1.1 是星期1
//输入年、月(2019,10) ->系统自带打印当月月历
//算年与年之间的天数有多少
Scanner input = new Scanner(System.in);
System.out.println("请输入年份:");
int year = input.nextInt() ;
System.out.println("请输入月份:");
int month =input.nextInt() ;
int days = 0;
for(int i = 1900; i < year;i++){
if((i%4==0 && i%100 !=0)||i%400==0){
days += 366;
}else{
days += 365;
}
}
//算一年之内的天数有多少
for(int i=1; i < month; i++){
if( i == 1 || i == 3|| i == 5|| i == 7||i == 8|| i == 10||i == 12){
days += 31;
}else if(i == 4 || i == 6|| i == 9|| i == 11 ){
days += 30;
}else{
if((year%4==0 && year%100 !=0)||year%400==0){
days += 29;
}else{
days += 28;
}
}
}
// for(int i=1;i<month;i++){
// switch(i) { //if()
// 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 ;
// }
// }
// }
// System.out.println(days);
// int xingQi = days% 7 ;
// System.out.println("2020.2.29是星期"+xingQi);
days++ ;//2019.10.1
// 星期 n = 天数% 7 ;
// System.out.println(days);
int xingQi = days % 7 ;
// System.out.println("2020.3.1是星期"+xingQi);
//定义一个月有几天
int daysOfMonth = -1;
if( month ==1 ||month ==3 ||month ==5 ||month ==7 ||month ==8||month ==10 ||month ==12 ){
daysOfMonth = 31;
}else if( month ==4 ||month ==6 ||month ==9 ||month ==11 ){
daysOfMonth = 30;
}else{
if( (year%4==0 && year%100 !=0)||year%400==0 ){
daysOfMonth = 29;
}else{
daysOfMonth = 28;
}
}
//打印星期几
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
//打印占位符
//根据观察可得: 星期几 前面有几个空格(占位符)
//空格(占位) ,占位符的个数 就是 星期n
for(int i=0;i< xingQi;i++){
System.out.print("\t\t");
}
//打印日期
for(int i=1;i<=daysOfMonth ;i++){
System.out.print(i+"\t\t");
if((xingQi+i)%7==0){
System.out.println();//回车
}
}
}
}