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;
}
}
}
}