以下是一些已知信息,但是或许你需要自己做一些其他的调查。
- 1900年1月1日是星期一。
- 30天的月份有:9月,4月,6月,11月。
- 此外的月份都是31天,当然2月除外。
- 2月在闰年有29天,其他时候有28天。
- 年份可以被4整除的时候是闰年,但是不能被400整除的世纪年(100的整数倍年)除外。
20世纪(1901年1月1日到2000年12月31日)一共有多少个星期日落在了当月的第一天?
解决问题源程序:
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class num19 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(getDay(1900,2000));
System.out.println(findSundays());
}
/**
* 计算1901年1月1日到2000年12月31日一共有多少天
*/
public static int getDay(int x,int y){
int sum=0,count=0;
for(int i=x;i<=y;i++){
for(int j=1;j<=12;j++){
if(j==1||j==3||j==5||j==7||j==8||j==10||j==12){
sum+=31;
}else if(j==4||j==6||j==9||j==11){
sum+=30;
}else if(j==2&&i%4==0&&i%100!=0){
sum+=29;
}else{
sum+=28;
}
if(sum%7==6&&i!=1900){
if(i==2000&&j==12){
}else
count++;
}
}
}
return count;
}
/**
* 使用java中的calendar
* @return
*/
private static int findSundays(){
int count = 0;
try {
final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar a = Calendar.getInstance();
a.setTime(format.parse("1901-1-1"));
Calendar b = Calendar.getInstance();
b.setTime(format.parse("2000-12-31"));
while(a.before(b)){
if(a.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){
count++;
}
a.add(Calendar.MONTH, 1);
}
} catch (Exception e) {
e.toString();
}
return count;
}
}
问题答案:171