1. 程式人生 > >【java】列印月曆

【java】列印月曆

package exercise;
import java.util.*;
import java.lang.*;//Math.PI

public class test1{
	public static void main(String[] args){
		printYearAndMouth();
		printTitle();
		int sum=sumofyear()+sumofmouth();
		sum++;
		printContent(sum%7);
		
	}
	private static int year=-1;
	private static int mouth=-1;
	static int[] mouthday={31,28,31,30,31,30,31,31,30,31,30,31};
	//使用者輸入年份月份
	private static void printYearAndMouth(){
		Scanner in= new Scanner(System.in);
		System.out.print("請輸入年份:");
		year=in.nextInt();
		System.out.print("請輸入月份:");
		mouth=in.nextInt();
	}
	//計算1900-year的天數
	private static int sumofyear(){
		int sum=0;
		for(int i=1900;i<year;i++){
			sum+=365;
			if(isLeapYear(i))
				sum+=1;
		}
		return sum;
	}
	private static boolean isLeapYear(int year){
		return year%400==0||year%4==0&&year%100!=0;
	}
	//mouth前幾個月的天數和
	private static int sumofmouth(){
		int sum=0;
		for(int i=0;i<mouth-1;i++)
			sum+=mouthday[i];
		if(mouth>=3&&isLeapYear(year))
			sum++;
		return sum;
	}
	//顯示標題和星期
	private static void printTitle(){
		String[] mouthof={"1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"};
		System.out.println("\t\t"+year+"\t\t"+mouthof[mouth-1]);
		String[] week={"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
		for(int i=0;i<week.length;i++)
			System.out.print(week[i]+"\t");
		System.out.println();
	}
	//根據mouth第一天是星期幾列印月份內容
	private static void printContent(int day){
		int step=0;//前面的空格
		if(day==0)//星期日
			step=6;
		else
			step=day-1;
		for(int i=0;i<step;i++)
			System.out.print("\t");
		for(int i=0;i<mouthday[mouth-1];i++){
			System.out.print(i+1);
			if((day+i)%7!=0)
				System.out.print("\t");
			else
				System.out.println();
		}
	}
}