1.
键盘录入 用户输入年份和月份,Scanner
类是用于获取输入的非常常用的类。它属于 java.util
包,因此在使用之前需要导入。用int整型来接受年或月
System.out.println("请输入一个年份:");
Scanner input =new Scanner(System.in);
int year=input.nextInt();//接收整数
System.out.println("请输入月份:");
int month=input.nextInt();
2.
定义一个整型days来存当月的总天数,12个月天数是不一样的1,3,5,7,8,10,12月有31天,4,6,9,11月有30天,2月特殊:平年28天闰年29天,所有用if判断输入的月份是几月,输出对应的天数.
定义一个整型yearsum来存输入年的总天数,for循环遍历从1900年到输入的年数有多少天,因为分平年闰年,所有也要用if判断, 1900年是日历的初始年份.
yearsum+=366 等于 yearsum=yearsum+366
year%100==0&&year%4==0||year%400==0是用来判断平闰年
- 如果年份能被4整除,那么它可能是闰年;
- 但是,如果年份能被100整除,则它不是闰年;
- 然而,如果年份能被400整除,则它又是闰年。
int days;//判断这个月有几天
if (month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
days=31;
}else if (month==2){
if (year%100==0&&year%4==0||year%400==0) days=29;
else days=28;
}else days=30;
System.out.println(month+"月"+days+"天");
int yearsum=0;//计算总的年数
for (int i = 1900; i <year; i++) {
if ((i%100!=0&&i%4==0||i%400==0)){
yearsum+=366;
}else yearsum+=365;
}
System.out.println(yearsum);
3.
定义整型monthsum来存总的月数,for循环来遍历从一月开始到输入的月份,一样要判断不同月份不同天数
int monthsum=0;//计算总的月数
for (int i = 1; i < month; i++) {
if (i==1||i==3||i==5||i==7||i==8||i==10||i==12)
{
monthsum+=31;
}else if (i==2){
if (year%100!=0&&year%4==0||year%400==0) monthsum+=29;
else monthsum+=28;
}else monthsum+=30;
}
System.out.println(monthsum);
4.
定义整型week来存某年某月的一号是周几,用(yearsum+monthsum+1)%7来计算,用三元运算判断如果week==0那么week=7.
输出语句打印日历表头,用for循环来打空格,再用for循环输出天数,如果week==0换行
int week=((yearsum+monthsum+1)%7==0)?7:(yearsum+monthsum+1)%7;
System.out.println(year+"年"+month+"月1号是周"+week);
//打印
//1.先打印空格
System.out.println("一\t二\t三\t四\t五\t六\t日");
for (int i = 1; i <week ; i++) {
System.out.print("\t");
}
//
for (int i = 1; i <= days; i++) {
System.out.print(i+"\t");
if ((yearsum+monthsum+i)%7==0){
System.out.println();
}
}
5.
结果展示