天天看點

計算某一天是這一年中的第幾天

import java.util.Scanner;

public class Year {
	public static void main(String[] args) {
		//掃描标準輸入流輸入的資料
		Scanner scan = new Scanner(System.in);
		 // 定義三個變量,分别用來接收,年,月,日
		int ye = 0, mon = 1, day = 1;
		// 用來接收最終天數
		int to = 0; 
		int a[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; // 定義數組,并固定每個月的天數

		for (;;) { // 進行輸入年
			System.out.print("請輸入年:");
			ye = scan.nextInt();//讀取标準輸入流不輸入的資料
			if (ye < 0) { // 判斷輸入年份是否有效
				System.out.println("年份應大于0,請重新輸入!");
				continue;
			} else {
				break;
			}
		}

		for (;;) { // 進行輸入月份
			System.out.print("請輸入月:");
			mon = scan.nextInt();
			if (mon < 0 | mon > 12) { // 判斷月份是否合法
				System.out.println("月份應在1-12之間,請重新輸入!");
				continue;
			} else {
				break;
			}
		}
		for (;;) { // 進行日期輸入
			System.out.print("請輸入日:");
			day = scan.nextInt();
			if ((ye % 400 == 0 && ye % 100 == 0) || ye % 4 == 0) { // 判斷是否為閏年,如果為閏年,對a[2]即二月份的天數進行重新指派
				a[2] = 29;

			}

			if (day > a[mon]) { // 對輸入天數的判斷是否合法
				System.out.println("日期應為有效值,請重新輸入!");
				continue;
			} else { // 如果合法,進行輸出操作
				if (mon == 1) { // 如果輸入月份為1月,就把當使用者輸入的天數指派給to,然後把to進行輸出
					to = day;
				} else { // 如果輸入月份大于1月,就進入for循環
					for (int i = 0; i <= mon - 1; i++) { // 循環條件是循環到使用者所輸入的月份的前一個月份,如:輸入3,則循環三次(因為i是從0開始循環的)
						to += a[i]; // 将對應的月份的數組天數值,指派給to
					}
					to += day; // 将使用者所輸入的日期加上,得到最終的該年的第某天
				}

				System.out.println("該天是該年的第" + to + "天"); // 将最終結果進行輸出
				break;
			}
		}
	}
}
           
計算某一天是這一年中的第幾天