蓝桥杯每日一题

举报
小羊不会飞 发表于 2022/04/01 10:36:53 2022/04/01
【摘要】 蓝桥杯每日一题

💖今日学习💖

使用Calendar这个API去处理时间问题

🎯题目描述:

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

整个 2020 世纪(19011901 年 11 月 11 日至 20002000 年 1212 月 3131 日之间),一共有多少个星期一?(不要告诉我你不知道今天是星期几)

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M 
package N_2013;

import java.time.Month;
import java.util.Calendar;

/**
 * @author yx
 * @date 2022-03-07 11:57
 */
public class Calendar类的调用 {
    public static void main(String[] args) {
        int ans = 0;
        Calendar c = Calendar.getInstance();
        for (int year = 1901; year <= 2000; ++year) {
            for (int month = 0; month <= 11; ++month) {
                c.clear(); // important
                c.set(Calendar.YEAR, year);
                c.set(Calendar.MONTH, month);
                int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);//获取该月的最大天数

                for (int day = 1; day <= maxDay; ++day) {
                    c.set(Calendar.DAY_OF_MONTH, day);
                    if (c.get(Calendar.DAY_OF_WEEK) == 2)ans++;//老外都是周日算一周的第一天
                }
            }
        }
        System.out.println(ans);    // ans: 5217
    }
}

题解分析使用Calendar这个API去解决与时间相关的问题

难点分析:

1、实例化Calendar类之后,要先调用clear()方法清空缓存

2、调用getActualMaximum(Calendar.DAY_OF_MONTH)方法获取该月份的最大天数


真题迁移

🎯题目描述:世纪末的星期

    曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。 还有人称今后的某个世纪末的12月31日,如果是星期一则会…
    有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!! 于是,“谣言制造商”又修改为星期日…
    1999年的12月31日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?
  

  请回答该年份?

(本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可)

package N_2013;

import java.util.Calendar;

/**
 * @author yx
 * @date 2022-03-06 16:26
 */

/*
calendar计算日期这个API的调用
calender这个API的调用(只能用于1970年以后)
 */
public class 世纪末的星期01 {
    public static void main(String[] args) {
        Calendar calendar=Calendar.getInstance();//创建一个Calendar的实例化对象
        for(int year=1999;year<10000;year+=100){//因为年份要求结尾必须是(xx99年)
            calendar.set(Calendar.YEAR,year);
            calendar.set(Calendar.MONTH,11);//这个是十二月,因为国外是从0开始算第一个月的
            calendar.set(Calendar.DAY_OF_MONTH,31);
            if(calendar.get(Calendar.DAY_OF_WEEK)==1){//这里表示的是周日,因为国外是从周日开始算第一天的
                System.out.println(year);
                break;
            }
        }

    }
}

题解分析:使用Calendar这个API去解决与时间相关的问题

难点分析:

1、熟练掌握Calendar的各种方法调用

例如:

calendar.set(Calendar.YEAR,year);//修改年份

calendar.set(Calendar.MONTH,11);//固定

calendar.set(Calendar.DAY_OF_MONTH,31);//固定日期

2、熟悉Calendar方法的底层源码

例如:

calendar.set(Calendar.MONTH,11)   //月份是从0开始计算的

calendar.get(Calendar.DAY_OF_WEEK)//国外是从周日开始算第一天的



蓝桥每日一题,最后冲刺,希望大家最后都能取得好成绩!!




【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。