星期一(藍橋杯)

整個20世紀(1901年1月1日至2000年12月31日之間),一共有多少個星期一?
(不要告訴我你不知道今天是星期幾)

注意:需要提交的只是一個整數,不要填寫任何多餘的內容或說明文字。

結果:5217

解析:判斷1901年1月1日到2000年12月31的每一天是星期幾,如果是星期一則統計的個數+1。

 

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class 星期一2
{
	public static boolean Method(int y,int m,int d) throws ParseException 
	{
		String s = y+"/"+m+"/"+d;  //轉換成yyyy/MM/dd的格式
		SimpleDateFormat simple = new SimpleDateFormat("yyyy/MM/dd");
		Date date = simple.parse(s);  //把日期轉換爲Date類型
		int y2 = date.getYear()+1900; //轉換爲Date之後的年
		int m2 = date.getMonth()+1;   //轉換爲Date之後的月
		int d2 = date.getDate();   //轉化爲Date之後的日
		if(y==y2&&m==m2&&d==d2)  //如果和原日期中的年月日都相同,說明該日期是合法的
		{
			return true;
		}
		return false;
	}

	public static void main(String[] args) throws ParseException
	{
		int cnt = 0;
		Calendar c1 = Calendar.getInstance();
		for(int i=1901;i<=2000;++i)
		{
			for(int j=1;j<=12;++j)
			{
				for(int k=1;k<=31;++k)
				{
					boolean flag = Method(i,j,k);     //檢驗日期是否合法
					if(flag)  // 合法情況
					{
						c1.set(i,j-1,k);   // 在設置時間的時候需要月份-1,因爲計算機中月份是0-11
						if(c1.get(Calendar.DAY_OF_WEEK)==2)//計算機中星期天是星期一,所以2代表現實中的星期一
						{
							cnt++;
						}
					}
				}
			}
		}
		System.out.println(cnt);

	}

}

運行結果:

5217

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章