//月曆的類
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);
}
}
}