星期一(蓝桥杯)

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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值