1. 程式人生 > >輸入一個日期,求該日期是當年的第多少天

輸入一個日期,求該日期是當年的第多少天

題目:輸入一個年、月、日格式的日期,如2017 2 3,求這一天是今年的第幾天?

忘了這是什麼時候遇到的題目了,應該是某個ACM平臺上的,難度不大,也就是傳說中的“水題”。

說明一下,我在這裡分享的程式碼和解題思路並不能保證一定是正確或者是最優解(盡最大努力,但不保證可靠交付,哈哈~,通常不是最優解,因為我並沒有進行優化,各位小夥伴有好的思路也可以告訴我哈~)

話不多說,先上程式碼,相信大家都能看懂,如果不太明白的,文章最下方我再簡單解釋一下。

import java.util.Scanner;
public class day {
	static int BR [] = {31,28,31,30,31,30,31,31,30,31,30,31};
	static int RN [] = {31,29,31,30,31,30,31,31,30,31,30,31};
	//****************計算日期*********************
	public static void jisuan(int year,int month,int day){
		int result=0;	//用來存放天數
		int re=0;		//用來標誌year是否為閏年
		//判斷是否為閏年——————————————————
		if(year%4==0&&year%100!=0)
			re=1;
		else if(year%400==0)
			re=1;
		//——————————————————————————
		//如果是閏年
		if(re==0){
			for(int k =0;k<month-1;k++){
				result = result+BR[k];	//把本月前的所有月份日期相加
			}
			result = result + day;		//再加上本月份的日期day
		}
		//如果不是閏年
		else{
			for(int k =0;k<month-1;k++)
				result = result+RN[k];	//把本月前的所有月份日期相加
			result = result + day;		//再加上本月份的日期day
		}
		System.out.println(result);
	}
	//******************main********************
	public static void main(String[] args) {
		Scanner sc =new Scanner(System.in);
		int year = sc.nextInt();	//輸入年份
		int	month = sc.nextInt();	//輸入月份
		int	day = sc.nextInt();		//輸入日期
		jisuan(year,month,day);		//呼叫jisuan()方法
	}
}

相信大家看到這應該都明白了。

思路很簡單:

1、輸入年、月、日。

2、判斷該年是否為閏年(2月份的天數有區別)。

3、把該月份之前的所有月份的天數相加,再加上本月的天數。

就這樣吧,有問題評論或者私信我,睡覺了~