天天看點

Java學習之旅(一) 月曆列印

//月曆的類


package cn.funfo.antity;


public class Calender {
	private int year;
	private int month;
	private int total, i;
	private int blanks;
	private boolean isRn = false;
	private int dayCount = 31;
	
/*	
 * public int getYear() {


		return year;
	}
	public void setYear(int year) {
		this.year = year;
	}
	public int getMonth() {
		return month;
	}
	public void setMonth(int month) {
		this.month = month;
	}
	*/
	
	


	public void Date_switch(int y,int m){
		year = y;
		month = m;
	}
	//計算天數
	
	
	
 	private void cal_total(int year, int month) {
		for (i = 1900; i <= year; i++) {
			isRn = i % 4 == 0 && i % 100 != 0 || i % 400 == 0;
			if (i == year) {
				break;
			}
			if (isRn) {
				total = total + 366;
			} else {
				total = total + 365;
			}
		}


		// 統計月份的天數


		for (i = 1; i <= month; i++) {
			dayCount = 31;
			switch (i) {
			case 4:
			case 6:
			case 9:
			case 11:
				dayCount = 30;
				break;
			case 2:
				dayCount = isRn ? 29 : 28;
			}
			if (i < month) {
				total += dayCount;
			}
		}
	}


	
	//計算空格
	private void cal_blanks(int sum){
		blanks = (sum%7+1);
		if(blanks==7){
			blanks=0;
		}		
	}
	
	//列印程式調用入口
	public void printf(int year,int month){	
		//setYear(year);
		//setMonth(month);
		Date_switch(year,month);
		cal_total(year,month);
		cal_blanks(total);
		print();
	}
	
	//列印某一個月循環
	private void print(){
		System.out.printf("\n\n");
		System.out.printf("----------- %d 年 %d 月 -----------\n", year,month);
		System.out.println("日\t一\t二\t三\t四\t五\t六\t");
		System.out.printf("\n");
		for (i = 0; i < blanks; i++) {
			System.out.print("\t");
		}
		for (i = 1; i <= dayCount; i++) {
			System.out.print(i + "\t");
			if ((blanks + i) % 7 == 0) {
				System.out.println();
			}
		}
	}
	@Override
	public String toString() {
		return "Calender [year=" + year + ", month=" + month + ", total="
				+ total + ", i=" + i + ", blanks=" + blanks + ", isRn=" + isRn
				+ ", dayCount=" + dayCount + "]";
	}
}







//測試類

import cn.funfo.antity.Calender;
import java.util.Scanner;
public class Test {
	static Scanner scanner = new  Scanner(System.in);
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Calender s = new Calender();
		System.out.println("請輸入年份:");
		int year = scanner.nextInt();
		for(int i=1;i<=12;i++){
			s.printf(year,i);
		}
	}
}