小小万年历

Posted 啦啦啦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小小万年历相关的知识,希望对你有一定的参考价值。

打印万年历(输入年份,月份,输出该月的日历,已知1900年1月1日是星期一),要求:

(1)编写一个方法判断闰年;

(2)编写一个方法判断某年某月有多少天;

(3)编写一个方法计算某年某月前距离1900年1月1日的总天数;(4)编写一个输出某年某月日历的方法;

(5)编写一个测试方法。

import java.util.*;
public class yearlist {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		paly();					
	}

	private static void paly() {
		// TODO Auto-generated method stub
		
		Scanner in=new Scanner(System.in);

		while(true)
		{
			System.out.println("1...判断闰年");
			System.out.println("2...判断某年某月有多少天");
			System.out.println("3...某年某月前距离1900年1月1日的总天数");
			System.out.println("4...输出某年某月日历");
			System.out.println("5...退出");
			int m;
			m=in.nextInt();
			switch(m)
			{
			case 1:
				int text;
				System.out.println("请输入年份...");
				int year=in.nextInt();
				text=testyear(year);
				if(text==1)
					System.out.println("yes");
				else
					System.out.println("no");
				break;
			case 2:
				int text1;
				System.out.println("请输入年...");
				int year1=in.nextInt();
				System.out.println("请输入月...");
				int month1=in.nextInt();
				text1=testmonth(year1,month1);
				System.out.println(text1);
				break;
			case 3:
				int text2;
				System.out.println("请输入年...");
				int year2=in.nextInt();
				System.out.println("请输入月...");
				int month2=in.nextInt();
				text2=calculate(year2,month2-1);
				System.out.println(text2);
				break;
			case 4:
				
				System.out.println("请输入年...");
				int year3=in.nextInt();
				System.out.println("请输入月...");
				int month3=in.nextInt();
				desplay(year3,month3);
				break;
			case 5:
				System.exit(0);
				break;

			}
		}
		
	}

	private static void desplay(int year,int month) {//万年历界面
		// TODO Auto-generated method stub
		int i,j,k=1;
		int day=calculate(year,month-1);
		int count,monday;
		count=testmonth(year,month);
		monday=day%7+1;
		System.out.println("一	二	三	四	五	六	日");
		for(i=1;i<=monday-1;i++)System.out.print(" 	");
		for(i=0;i<7;i++)
		{
			for(j=0;j<7;j++)
			
			{
				System.out.print(k+"	");
				
				if(8-monday==k||k==count)
				{k++;
					break;
				}
				k++;
			}
			System.out.println("");
			if(k>=count) break;
			
		}
	}

	private static int calculate(int year,int month) {//计算距离1900.01.01天数
		int i,j,count=0;
		for(i=1900;i<=year;i++)
		{
			for(j=1;j<=12;j++)
			{
				count=count+testmonth(i,j);	
				if(i==year&&j==month)
				break;

			}
		}
		return count;
		
		
	}

	private static int testmonth(int year,int month) {//计算当月天数
		// TODO Auto-generated method stub
		int x,y=0;
		x=testyear(year);
		switch(month)
		{
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
		 y=31;
		break;
		
		case 2:
				if(x==1)
					y=29;
				else
					y=28;
			break;
			
		case 4:
		case 6:
		case 9:
		case 11:
		y=30;
		break;
		}
		return y;
		
	}
	
		public static int testyear(int m) {//判断闰年
			// TODO Auto-generated method stub
			if(m%4==0&&m%100!=0||m%400==0)
				return 1;
			else 
				return 0;
			
		}

}

  

以上是关于小小万年历的主要内容,如果未能解决你的问题,请参考以下文章

学历不够技术来凑,大专生逆袭进阿里拿百万年薪

java万年历

《万年历》第3节:项目完整代码

算法,java代码实现打印万年历

知识类API调用的代码示例合集:驾考题库ISBN书号查询万年历查询等

0302借软件工程触IT