星期一(蓝桥杯)

整个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

 

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