1. 程式人生 > >CCF試題日期計算-Java

CCF試題日期計算-Java

問題描述
  給定一個年份y和一個整數d,問這一年的第d天是幾月幾日?
  注意閏年的2月有29天。滿足下面條件之一的是閏年:
  1) 年份是4的整數倍,而且不是100的整數倍;
  2) 年份是400的整數倍。
輸入格式
  輸入的第一行包含一個整數y,表示年份,年份在1900到2015之間(包含1900和2015)。
  輸入的第二行包含一個整數d,d在1至365之間。
輸出格式
  輸出兩行,每行一個整數,分別表示答案的月份和日期。
樣例輸入
2015
80
樣例輸出
3
21
樣例輸入
2000
40
樣例輸出
2
9

import java.util.Scanner;

public class DateCompute {
	static Scanner sc;
	static int year;
	static int day;
	static int[] monthping = {0,31,28,31,30,31,30,31,31,30,31,30,31};
	static int[] monthlun = {0,31,29,31,30,31,30,31,31,30,31,30,31};
	public static void main(String[] args) {
		sc = new Scanner(System.in);
		year = sc.nextInt();
		day = sc.nextInt();
		deal(year,day);
		
	}
	
	public static void deal(int year,int day) {
		int sum=0;
		if(((year%4==0)&&(year%100!=0))||(year%400==0)) {
			//表示是閏年
			for(int i=1;i<monthlun.length;i++) {
				sum+=monthlun[i];
				if(sum>=day) {
					//表示在第i個月
					System.out.println(i);
					System.out.print(day-sum+monthlun[i]);
					break;
				} 
			}
		} else {
			//表示是平年
			for(int i=1;i<monthping.length;i++) {
				sum+=monthping[i];
				if(sum>=day) {
					//表示在第i個月
					System.out.println(i);
					System.out.print(day-sum+monthping[i]);
					break;
				} 
			}
		}
	}
}