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