参考练习,代码基本已经理解 最后取模部分有待理解。

package MyCalendar;

import java.util.Scanner;
/*
 * 万年历
 */
public class Calendar
{
	private static Scanner in = new Scanner(System.in);
	private static int year;
	private static int month;
	private static int days; //接收当月第一天星期几的变量
	private static int monthDays; //接收当月天数的变量
	/*
	 * 判断年份 瑞 平
	 */
	private static boolean isRun(int year)
	{
		if(year % 4 == 0 && year% 100 != 0 || year % 400 == 0)
		{
			return true;
		}
		return false;
	}
	/*
	 * 判断当月天数。
	 */
	private static int getMonthDay(int year , int month)
	{
		int days = 31;
		switch(month)
		{
			case 2:
				if(isRun(year))
				{
					days = 29;
				}
				else
				{
					days = 28;
				}
				break;
			case 4:
			case 6:
			case 9:
			case 11:
				days = 30;
				break;
		}
		return days;
	}
	/*
	 * 计算1900-1-1至传入年月过了多少天。
	 */
	private static int getTotaDays(int year , int days)
	{
		int todaDays = 0;
		for(int i = 1900 ; i < year ; i++ ) //1900-year 总天数
		{
			if(isRun(i))
			{
				todaDays += 366;
			}
			else
			{
				todaDays += 365;
			}
		}
		for(int i = 1 ; i < month ; i++) //计算year年month-1月 的总天数
		{
			todaDays += getMonthDay(year, i);
		}
		return todaDays;
	}
	
	public static void main(String[] args)
	{
		System.out.println("*****欢迎使用万年历*****");
		System.out.println("******请输入年份!******");
			year = in.nextInt();
		System.out.println("******请输入月份!******");
			month = in.nextInt();
		System.out.println("您输入的是"+year+"年,"+month+"月");
		System.out.println(isRun(year)?"*******是瑞年*******":"*******是平年*******");
		System.out.println("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日\t");
			int iCount = 0; //计数器,用于统计周天数,方便换行。
			days = ((getTotaDays(year, month)+1)%7); //计算当月第一天星期几
			monthDays = getMonthDay(year , month);//当月天数
		for(int i = 0 ; i < days ; i++) //打印出日历头空白区域。
		{
			System.out.print("\t");
			iCount++;
		}
		for(int i = 1 ; i <= monthDays ; i++)//打印当月
		{
			System.out.print(i+"\t");
			iCount++;
			if(iCount%7==0)
			{
				System.out.println();
			}
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值