1. 程式人生 > >萬年曆(實現從鍵盤輸入1900年之後的任意的某年、某月,輸出該月的日曆)

萬年曆(實現從鍵盤輸入1900年之後的任意的某年、某月,輸出該月的日曆)

import java.util.Scanner;
public class Test22{
public static void main(String [] args){
int year;//儲存輸入的年
int month;//儲存輸入的月
int days=0;//儲存月份的天數
int totalDays=0;//存放總的天數差
boolean isRn;//判斷輸入的年是否是閏年,是的話true,不是false
Scanner input=new Scanner(System.in);
System.out.println("***************萬年曆**************");
System.out.println("請輸入年:");
year=input.nextInt();
System.out.println("請輸入月:");
month=input.nextInt();
if(year%400==0||(year%4==0&&year%100!=0)){
isRn=true;//代表閏年
}else{
isRn=false;//代表平年
}
if(isRn){
System.out.println(year+"是閏年");
}else{
System.out.println(year+"是平年");
}


//計算年的總天數
for(int i=1900;i<year;i++){
if(i%400==0||(i%4==0&&i%100!=0)){
totalDays+=366;
}else{
totalDays+=365;
}
}


//計算你輸入月份的天數
for(int i=1;i<=month;i++){
switch(i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days=31;
break;
case 2:
if(isRn){
days=29;
}else{
days=28;
}
break;
case 4:
case 6:
case 9:
case 11:
days=30;
break;
default:
System.out.println("輸入的月份有誤");
break;


}


//累加求和,輸入月份的天數儲存到days變數中,但不累加進來
if(i!=month){
totalDays+=days;
}
 }
//求這個月的第一天是星期幾.也就是輸出的\t的個數
int beforeDays=0;
beforeDays=1+totalDays%7;
if(beforeDays==7){
beforeDays=0;
}


//列印輸出
System.out.println("星期天\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
//先列印輸出\t的個數
for(int i=0;i<beforeDays;i++){
System.out.print("\t");
}


for(int i=1;i<=days;i++){
System.out.print(i+"\t");
if((beforeDays+i)%7==0){
System.out.println();
}
}
}
}