java的方法版万年历

方法版万年历

import java.util.Scanner;
public class fuxi{
	/**
		知识点:打印那年的日历表
		
	*/
	public static void main(String[] args){
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入年:"); //2021
		int year = scan.nextInt();
		
		for(int i =1;i<12;i++){
			//1.计算1900~输入年的总天数
			int allDayOfYear = getAllDayOfYear(1900,year);
			
			//2.计算1~输入月的总天数
			int allDayOfMonth = getAllDayOfMonth(year,1,i);

			//3.年的总天数 + 月的总天数
			int allDay = allDayOfYear + allDayOfMonth+1 ;
			
			//4.获取星期
			int week = getWeek(allDay);
			
			//5.获取当月天数
			int day = getDay(year,i);
			
			//5.打印日期
			printCalendar(year,i,day,week);
			System.out.println();
            System.out.println("-----------------");
		}
	}
	
	//打印日期
	public static void printCalendar(int year,int month,int day,int week){
		System.out.println(" --- " + year + "年 - " + month + "月 ---");
		System.out.println("一\t二\t三\t四\t五\t六\t日");

		int num = 0;
		for(int i = 1;i<week;i++){
			System.out.print("\t");
			num++;
		}
		
		for(int i = 1;i<=day;i++){
			System.out.print(i + "\t");
			num++;
			if(num%7==0){
				System.out.println();
			}
		}
	}
	
	//获取星期
	public static int getWeek(int allDay){
		if(allDay%7 == 0){
			return 7;
		}
		return allDay%7;
	}
	
	//获取开始月到结束月的天数
	public static int getAllDayOfMonth(int year,int startMonth,int endMonth){
		int allDayOfMonth = 0;
		for(int i = startMonth;i<endMonth;i++){
			allDayOfMonth += getDay(year,i);
		}
		return allDayOfMonth;
	}
	
	//获取当月天数
	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=28;
				}
			break;
		}
		return day;
	}
	
	//获取开始年到结束年的天数
	public static int getAllDayOfYear(int startYear,int endYear){
		int allDayOfYear = 0;
		for(int i = startYear;i<endYear;i++){
			if(isLeapYear(i)){
				allDayOfYear+=366;
			}else{
				allDayOfYear+=365;
			}
		}
		return allDayOfYear;
	}
	
	//判断是否是闰年
	public static boolean isLeapYear(int year){
		if(year%4==0&&year%100!=0 || year%400== 0){
			return true;
		}
		return false;
	}
	
	
}

运行效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2NUjpYBN-1627401699119)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20210726200821228.png)]

ar%400== 0){
return true;
}
return false;
}

}


运行效果

[外链图片转存中...(img-2NUjpYBN-1627401699119)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值