我的万年历程序,Calendar.java

本文介绍了一个用Java实现的万年历程序,该程序能够准确计算任意年份和月份的日期信息,包括判断是否为闰年、计算每月天数、确定每个月第一天对应的星期等,并通过清晰的格式打印出完整的日历。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以上就是万年历程序了。


/*
 * 完成时间:2016年10月6日 22:50:31
 * 思想来源:java语言程序设计.基础版
 * 作者:南极看见你
 * 版权所有:南极看见你
 * 维护的时间:
 */
package human.calendar.console;

public class Calendar {
	// 解决闰年的问题
	static boolean is_Leap_Year(int year) {
		return (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0));
	}

	// 这个月是几天?
	static int days_in_month(int year, int month) {
		// 这些月份是31天
		if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
			return 31;
		} else if (month == 2) {
			if (is_Leap_Year(year)) {
				return 29;
			} else
				return 28;
		} else
			return 30;

	}

	// 某月1号是一年中的第几天?
	static int days_in_years(int year, int month) {
		int days = 1;
		if (month == 1) {
			return days;
		} else {
			for (int i = 2; i <= month; i++) {
				days += days_in_month(year, i - 1);
			}
			return days;
		}

	}

	// 从2016年8月1号开始,已经这是第几天了?
	static int days_from_2016_8_1(int year, int month) {
		int days = 153;
		for (int years = 2017; years <= year - 1; years++) {
			days += 365;
			// 别忘了他要是闰年还要加上个一天!
			if (is_Leap_Year(years)) {
				++days;
			}
		}
		days += days_in_years(year, month);
		return days;
	}

	// 印出日历的头
	static void printCalendarHead(int year, int month) {
		System.out.println(year + "年" + month + "月");
		System.out.println("----------------------------------------------------------");
		System.out.println("\t" + "日" + "\t" + "一" + "\t" + "二" + "\t" + "三" + "\t" + "四" + "\t" + "五" + "\t" + "六");
	}

	// 判断星期几
	static int isWeekday(int days) {
		return days % 7;
	}

	// 打印万年历主体了!
	static void printCalendarBody(int year, int month,int blank_Day) {
		int days=days_in_month(year, month);
		for (int i = 1; i <= blank_Day; i++) {
			System.out.print("\t" + "空");
		}
		for (int i = 1; i <= days; i++) {
			System.out.print("\t" + i);
			if ((i + blank_Day) % 7 == 0)
				System.out.println();
		}
	}
	
	//主角登场了,万年历输出方法!
	static void printCalendar(int year,int month){
		int days=days_from_2016_8_1(year, month);
		int blank_Day=isWeekday(days);
		printCalendarHead(year, month);
		printCalendarBody(year, month, blank_Day);
	}
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值