天天看點

用java進行簡單的萬年曆編寫

import java.util.Scanner;
 public class PrintCalendarDemo1 
{
	public static void main(String[] args) 
	{
		int year;//儲存輸入的年
		int month;//儲存輸入的月
		boolean isRn;//閏年儲存true,否則為false
		int days=0;//儲存月份的天數
		int totalDays=0;//儲存總的天數差
		System.out.println("***************使用萬年曆***************");
		Scanner input= new Scanner(System.in);
		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("輸入的月份有誤!");
			}
			//輸入月的天數儲存到days變量,但不累加
			if(i!=month){
				totalDays+=days;
			}

		}
		//求出星期幾,其實就是前面\t的個數
		int beforDays;
		beforDays=1+totalDays%7;
		if(beforDays==7){
			beforDays=0;
		}
		System.out.println("星期天\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t");
		for(int i=0;i<beforDays;i++){
			System.out.print("\t");
		}
		for(int i=1;i<=days;i++){
			System.out.print(i+"\t");
			if((i+beforDays)%7==0){
				System.out.println();
			}
		}
	
	System.out.println();	
	System.out.println(year+"年"+month+"月"+"有"+days+"天");

	}
}