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");
				}
			}
		}
	}
}


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