第四届蓝桥杯JavaB组刷题记录-世纪末的星期

题目描述
曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。

还有人称今后的某个世纪末的12月31日,如果是星期一则会…

有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!!

于是,“谣言制造商”又修改为星期日…

1999年的12月31日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?

请回答该年份(只写这个4位整数,不要写12月31等多余信息)

解题过程

这题主要是对java常用类-Calender的使用,掌握了Calender的一些方法的使用与其中变量的含义,这题还是挺容易的…
题中的重要信息:世纪末的12月31日,表示判断的条件XX99年的12月31日这一天是否为星期天。

要点

  1. 因为Calender为为抽象类,实例化Calender类时需要重写方法,所以使用getInstance的单例模式创建实例。
    Calendar calendar=Calendar.getInstance();
  2. 使用Calender中的calendar.set()方法可以设置时间,其中包含三个参数,年、月、日。按顺序赋值可以设置时间。calendar.set(year,11,31);
  3. 其中月份从0开始计算,所以12月赋值为11 , 0、1、2、3…11。
  4. 判断语句calendar.get(Calendar.DAY_OF_WEEK)==1 ,其中为获取月份的语句,获取年月日等方式类似。

具体Calender的更多内容: JAVA常见类(十二)Calendar类.

代码

package 世纪末的星期_502;
import java.util.*;
public class Main {
    public static void main(String[] args) {
    //单例模式获取Calender的实例化
        Calendar calendar=Calendar.getInstance();
        //验证星期天的week为1(写代码这天正好是星期天)
        //System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
        //for循环遍历所有的世纪末,year要100的加
        for (int year=1999;year<=9999;year+=100){
        	//赋值给calender
            calendar.set(year,11,31);
            //判断是否为星期天,星期天为1
            if(calendar.get(Calendar.DAY_OF_WEEK)==1){
            	//输出第一个年份后跳出循环
                System.out.println(year);
                break;
            }
        }
    }
}