public class Methodversion {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你想查询的年份:");
int year = sc.nextInt();
System.out.println("请输入你想查询的月份:");
int month = sc.nextInt();
int week = getWeek(year,month);
//获取当月的天数
int day = getDay(year,month);
//打印日历
printCanlender(year,month,day,week);
}
//打印日历
public static void printCanlender(int year,int month,int day,int week) {
System.out.println(year+"年"+month+"月");
System.out.println("一\t二\t三\t四\t五\t六\t日");
int count=0;//换行的变量
//打印前面的空格
for(int i=1;i<week;i++)
{
System.out.print("\t");
count++;
}
for(int j=1;j<=day;j++)
{
System.out.print(j+"\t");
count++;
if(count%7==0)
{
System.out.println();
}
}
}
//获取星期几
public static int getWeek(int year ,int month)
{
int allDay = getAllDay(year,month);
int week =allDay%7;
if(week==0) {
week=7;
}
return week;
}
//下面是获取总天数
public static int getAllDay(int year,int month)
{
int allDay=0;
allDay = getAllDayYear(1900,year)+getAllDayMonth(year,1,month)+1;
return allDay;
}
//获取月份的天数
public static int getAllDayMonth(int year,int startMonth,int endMonth )
{
int allDayMonth=0;
for(int i=startMonth;i<endMonth;i++)
{
//获取天数如果是闰年就是
allDayMonth+=getDay(year,i);
}
return allDayMonth;
}
//获取年份的总天数
public static int getAllDayYear(int startYear,int endYear) {
int allYearOfDay=0;
//判断是闰年的情况
for(int i=startYear;i<endYear;i++)
{
if(isLeapYear(i))
{
allYearOfDay+=366;
}
else
{
//判断平年的情况
allYearOfDay+=365;
}
}
return allYearOfDay;
}
//获取当月的天数
public static int getDay(int year,int month) {
int day=0;
switch(month) {
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
day = 31;
break;
case 4:case 6:case 9:case 11:
day = 30;
break;
case 2:
if(isLeapYear(year)){
//闰年的情况
day =29;
}
//平年的情况
else {
day=29;
}
break;
}
return day;
}
//判断是否是闰年
public static Boolean isLeapYear(int year) {
if(year%4==0&&year%100!=0||year%400==0)
{
return true;
}
return false;
}
}
本题是从1900年到2024年记录,首先判断我们输入的year是否是闰年,我们要获取到1900年到year年一共有多少天,获取月份的天数。我们需要在打印的时候需要获取一个月内的周数,当能被七整除的时候我们就换行,其次我们要打印月份前面的\t(只会出现0,1,2,3,4,5,6)个\t
最后我们的实现图如下: