万年历

import java.util.Scanner;
/*
 * 1 判断输入的年是平年还是闰年
 * 2 参照年月1900-1-1是星期一
 * 3 输入的年份月份至参照年月相差多少天
 * 4 判断月的第一天是星期几
 * 5 输出万年历
 * */
//打印万年历
public class wannianli {
   //判断某年是闰年还是平年的方法
	public static boolean panduan(int year)
	{
		if((year%4==0&&year%100!=0)||year%400==0)
			return true;
		else
			return false;
	}
	//判断某年的某月有多少天
	public static int mouthdays(int year,int mouth)
	{	
		int days=31;//用来记录某月有多少天 默认每月都是大月31天
		switch(mouth)
			{
			case 4:
			case 6:
			case 9:
			case 11:
				days = 30;
				break;
			case 2:
				if(panduan(year))
					days = 29;
				else
					days = 28;
				break;
			}
		return days;
	}
	//参照年月 1900-1-1是星期一,计算输入的年份的某月到参照年月一个过了多少天
	public static long getTotaldays(int year,int mouth)
	{
		long totaldays=0;
		for(int i=1900; i<year; i++)
		{
			if(panduan(i))    //i是某年
				totaldays+=366;
			else
				totaldays+=365;
		}
		for(int m=1; m<mouth; m++)
		{
			totaldays+=mouthdays(year,m);//m是某月
		}
		return totaldays;	
	}
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);//建立输入对象
		int year;//输入年份
		int mouth;//输入月份
		long day; //用于记录月的第一天
		long totaldays;//输入的年份的某月到参照年月一个过了多少天
		
		System.out.println("*********欢迎使用万年历*******");
		System.out.println("请输入年份:	");
		year = in.nextInt();
		System.out.println("请输入月份:	");
		mouth = in.nextInt();
		System.out.println("\t您输入的年份是:"+year+"年"+mouth+"月");
		//判断此年是闰年还是平年
		if(panduan(year))
			System.out.println(year+"是闰年。");
		else
			System.out.println(year+"是平年。");
		System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t");
		totaldays = getTotaldays(year,mouth);
		totaldays++;//这个月的第一天
		day = totaldays%7;//day为多少这个月的第一天就是星期几  也就是输出多少个空格
		int counter=0;//用于判断换行
		for(int i=0; i<day; i++)
		{
			System.out.print(" \t");
			counter++;
		}
		for(int y=1; y<=mouthdays(year,mouth); y++)
		{
			System.out.print(y+"\t");
			counter++;
			if(counter%7==0)
			System.out.println();	
		}
	}
}
 

java中的命名约定
1 变量名,方法名      首单词小写,其余单词的的首字母大写
2 接口名 类名       所有单词 的第一个字母大写
3 常量      完全大写
4 包      全部单词小写


注释  用途 方便阅读





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值