万年历项目—java

最简单最容易看懂的万年历项目
有注释

package riLi;

import java.util.*;
public class RiLi {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int dataDays;
		System.out.println("请输入年份:");
		int year = scanner.nextInt();
		System.out.println("请输入月份:");
		int month = scanner.nextInt();
		//判断输入是否合理
		if(year<1900||month>12||month<0)
		{
			System.out.println("输入错误");
			System.exit(0);
			
		}
		
		/*
		 * 
		 * 判断用户输入的月份的天数
		 */
		int day;
		switch (month) {
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			day = 31;	
			break;
		case 2:
			if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {

                day = 29;
            } else {

                day = 28;
            }
            break;
        default:

            day = 30;
            break;
		}
	
		
		dataDays = days(year,month);//用户输入月份之前一共多少天
		int xingqi=dataDays%7+1;//此月一号是星期几
		int huam=xingqi;
		//打印表头
		System.out.println("**********万年历*****************");
		System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
		//打印一号之前的空格
		for (int i = 0; i < xingqi; i++) {
			System.out.print("\t");
		}
		//打印日历
		for(int i=1;i<=day;i++)
		{
			System.out.print(i+"\t");
			if(huam%7==6)
				System.out.println();
			huam++;
		}
		
	}
	
	
	/**
	 * 
	 * @param year
	 * @param mount
	 * @判断在此月之前一共多少天
	 */
private static int days(int year,int mount) {
	int yearDays=0;
	for(int i=1900;i<year;i++) {
		if(i%4==0&&i%100!=0||i%400==0) {
			yearDays += 366;
		}
		else {
			yearDays += 365;
		}
	}
	if(year%4==0&&year%100!=0||year%400==0)
	{
		switch (mount) {
		case 1:
			yearDays+=0;
			break;
		case 2:
			yearDays+=31;
			break;
		case 3:
			yearDays+=60;
			break;
		case 4:
			yearDays+=91;
			break;
		case 5:
			yearDays+=121;
			break;
		case 6:
			yearDays+=152;
			break;
		case 7:
			yearDays+=182;
			break;
		case 8:
			yearDays+=213;
			break;
		case 9:
			yearDays+=244;
			break;
		case 10:
			yearDays+=274;
			break;
		case 11:
			yearDays+=305;
			break;
		case 12:
			yearDays+=335;
			break;
		default:
			break;
		}
	}
	else
	{
		switch (mount) {
		case 1:
			yearDays+=0;
			break;
		case 2:
			yearDays+=31;
			break;
		case 3:
			yearDays+=59;
			break;
		case 4:
			yearDays+=90;
			break;
		case 5:
			yearDays+=120;
			break;
		case 6:
			yearDays+=151;
			break;
		case 7:
			yearDays+=181;
			break;
		case 8:
			yearDays+=212;
			break;
		case 9:
			yearDays+=243;
			break;
		case 10:
			yearDays+=273;
			break;
		case 11:
			yearDays+=304;
			break;
		case 12:
			yearDays+=334;
			break;
		default:
			break;
		}
	}
	return yearDays;
	}
		
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值