java:打印日历

预览效果:

在这里插入图片描述
在这里插入图片描述

思路:

借用2001年1月1日星期一作为基准,计算出要求月份第一天到这一基准的天数,求出该月第一天星期几,打印出即可。因为闰年每100年的判断的关系,计算比较麻烦,所以省点麻烦只打印2001~2099年之内的月份

代码如下:

package num;

import java.util.Scanner;

public class num{

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		int year,month;
		System.out.println("输入年份(2001~2099):");//2001.1.1星期一
		year=scan.nextInt();
		System.out.println("输入月(1~12):");//2001.1.1星期一
		month=scan.nextInt();
		int tem=year-2001;
		int a=tem/4;//4年一个周期
		int b=tem%4;//余几年
		int num=a*1461+b*365;//计算天数
		if(b!=3)//是否是闰年
		{
			if(month==1)
			{
				num+=0;
			}
			if(month==2)
			{
				num+=31;
			}
			if(month==3)
			{
				num+=59;
			}
			if(month==4)
			{
				num+=90;
			}
			if(month==5)
			{
				num+=120;
			}
			if(month==6)
			{
				num+=151;
			}
			if(month==7)
			{
				num+=181;
			}
			if(month==8)
			{
				num+=212;
			}
			if(month==9)
			{
				num+=243;
			}
			if(month==10)
			{
				num+=273;
			}
			if(month==11)
			{
				num+=304;
			}
			if(month==12)
			{
				num+=334;
			}
		}
		if(b==3)//是闰年 从2月份后 每月比平年num++
		{
			if(month==1)
			{
				num+=0;
			}
			if(month==2)
			{
				num+=31;
			}
			if(month==3)
			{
				num+=59;
				num++;
			}
			if(month==4)
			{
				num+=90;
				num++;
			}
			if(month==5)
			{
				num+=120;
				num++;
			}
			if(month==6)
			{
				num+=151;
				num++;
			}
			if(month==7)
			{
				num+=181;
				num++;
			}
			if(month==8)
			{
				num+=212;
				num++;
			}
			if(month==9)
			{
				num+=243;
				num++;
			}
			if(month==10)
			{
				num+=273;
				num++;
			}
			if(month==11)
			{
				num+=304;
				num++;
			}
			if(month==12)
			{
				num+=334;
				num++;
			}
		}
		int week=num%7+1;
		System.out.println("日       一      二     三       四       五     六");
		if(week!=7)
		{
			for(int i=1;i<=week;i++)
			{
				System.out.print("  ");
				System.out.print(" ");
			}
		}
		if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
		{
			for(int i=1;i<=31;i++)
			{
				if(i<10)
				{
					System.out.print(i);
					System.out.print("  ");
				}
				else 
				{
					System.out.print(i);
					System.out.print(" ");
				}
				int v=i+week;
				if(v%7==0)
				{
					System.out.print("\n");
				}
			}
		}
		if(month==4||month==6||month==9||month==11)
		{
			for(int i=1;i<=30;i++)
			{
				if(i<10)
				{
					System.out.print(i);
					System.out.print("  ");
				}
				else 
				{
					System.out.print(i);
					System.out.print(" ");
				}
				int v=i+week;
				if(v%7==0)
				{
					System.out.print("\n");
				}
			}
		}
		if(month==2)
		{
			int vv=28;
			if(b==3) vv=29;
			for(int i=1;i<=vv;i++)
			{
				if(i<10)
				{
					System.out.print(i);
					System.out.print("  ");
				}
				else 
				{
					System.out.print(i);
					System.out.print(" ");
				}
				int v=i+week;
				if(v%7==0)
				{
					System.out.print("\n");
				}
			}
		}
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章