用java语言编写某一年的日历并打印(扩展)

编写某一年的日历并打印(扩展)

	public class Calendar{
		public static void main(String[] args){
		//建立一个Scanner扫描器在控制台输入需要打印的年份
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入所要打印年份的日历表:例如2020");
		int year=sc.nextInt();
		//调用打印日历函数
		print(year);
	}
	//创建一个函数来获得所求年份中的每月天数
	public static int getMonthDays(int year,int month){
		int days=-1;
		switch(month){
			case 4:
			case 6:
			case 9:
			case 11:
			days=30;break;
			case 1:
			case 3:
			case 5:
			case 7:
			case 8:
			case 10:
			case 12:
			days=31;break;
			case 2:days=year%400==0||(year%4==0&&year%100!=0) ? 29:28;
		}
		return days;
	}
	// 给定年月日求出这个日子是这一年的第多少天 2020-4-12
	public static int getYearDays(int year,int month,int day){
		int totalDays=0;
		for(int i=1;i<month;i++){
			totalDays+=getMonthDays(year,i);
		}
		return totalDays+day;
	}
	/*
        给定年月日求出这个日子是星期几 2020-4-12
		int week = (year-1+(year-1)/4-(year-1)/100+(year-1)/400+days)%7;
     */
     public static int getWeek(int year,int month,int day){
		//先获得这个年月日是这年的第多少天
		int days=getYearDays(year,month,day);
		int week=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+days)%7;
		return week;
	}
	//先输出每年指定月份的日历
	public static void print(int year,int month){
		System.out.println();
		System.out.println("\t\t<"+year+"年"+month+"月>");
		System.out.println("一\t二\t三\t四\t五\t六\t日");
		System.out.println();
		//获得这个月有多少天
		int monthDays=getMonthDays(year,month);
		//找出每月一日是星期几
		int week=getWeek(year,month,1);
		//定义一个计数器
		int count=0;
		//打印每月一号之前空白
		for(int i=0;i<week-1;i++){
			System.out.print("\t");
			count++;
		}
		//输出格式可以自己按照自己需求来打印
		for(int i=1;i<=monthDays;i++){
			System.out.print(i+"\t");
			//如果count等于7就换行打印
			if(++count%7==0){
			System.out.println();
			System.out.println();
			}
		}
		System.out.println();
	}
	//用方法重载打印一整年的日历
	public static void print(year){
	for(int i=1;i<=12;i++)
		print(year,i);
	}
}

/*若此文章有纰漏,希望广大网友发现问题之后在评论区积极留言,谢谢!(此文章仅供参考)*/
[该文章扩展链接文章的内容,链接文章所求的是“输入年月日求得一年中的第几天”](https://blog.csdn.net/weixin_44941121/article/details/103842566)


你可能感兴趣的:(Java基础知识应用,Java,java)