JAVA实现动态日历的生成 - 带注释

JAVA实现动态日历的生成

只要在主函数main中创建DateTable对象,使用display方法即可输出
如:

//定义一个日历对象dt
		DateTable dt= new DateTable(2019, 6);
		//dt执行显示日历的方法
		dt.display();

结果图:
在这里插入图片描述
DataTable类,源码:

/**
 * JAVA实现动态日历生成
 * @author garen
 * */
package DateTable;

public class DateTable {
	/**成员变量*/
	/**年*/
	private int year;
	/**月*/
	private int month;

	/**构造方法*/
	DateTable(int y, int m) {
		year = y;
		month = m;
	}
	
	/**leapyear判断闰年方法*/
	public boolean leapyear(int y) {
		if (y % 400 == 0 || ((y % 4 == 0) && (y % 100 != 0))) {
			return true;
		}
		return false;
	}
	/**计算某个月有多少日*/
	int getdayofmonth(int month) {
			/**判断month*/
			switch (month) {
			case 1:
			case 3:
			case 5:
			case 7:
			case 8:
			case 10:
			case 12:
				return 31;
				/**二月需要判断是否为闰年,调用leapyear闰年方法*/
			case 2:
				if(leapyear(this.year))
					return 29;
				else
					return 28;
			case 4:
			case 6:
			case 9:
			case 11:
				return 30;
			default:
				return 0;
			}
	}
	
		/**计算1900至今有多少天,先算年,然后把没满今年的月份天数继续加上*/
		public int getsumto1900() {
			/**定义一个days整数来累加求和*/
			int days = 0;
			/**有多少年就循环多少天*/
			for (int i = 1900; i < this.year; i++) {
				/**判断闰年,如果是闰年就加366天,如果不是就加365天*/
				if (leapyear(i)) {
					days += 366;
				} else {
					days += 365;
				}
			}
			/**把今年的前几个月天数循环累加起来*/
			for (int i = 1; i < month; i++) {
				days += getdayofmonth(i);
			}
			/**返回1900至今有多少天*/
			return days;
		}
		
	/**输出日历*/
	public void display() {
		/**计数器,来控制换行*/		
		int count=0;
		/**定义days来存储本月有多少天*/
		int days=getdayofmonth(this.month);
		/**根据1900至今来计算第一天前面的空格有多少个,存到space里面*/
		int spaces=getsumto1900()%7;
		/**输出头部菜单*/
		System.out.println("-----------"+this.year+"年-----------"+this.month+"月-----------");
		System.out.println("一\t二\t三\t四\t五\t六\t日");
		/**输出前面的空格*/
		for(int i=0;i<spaces;i++){
			System.out.print("\t");
			/**输出一次count++,逢7换行*/
			count++;
			if(count%7==0){
				System.out.println();
			}
		}
		/**接着循环输出本月日期*/
		for(int i=0;i<days;i++)
		{
			System.out.print((i+1)+"\t");
			/**输出一次count++,逢7换行*/
			if(count%7==0){
				System.out.println();
			}
			count++;
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值