106. 跑步锻炼(结果填空)

public class Main {  
    public static void main(String[] args) {  
        int startYear = 2000;  
        int startMonth = 1;  
        int startDay = 1; // 周六  
        int endYear = 2020;  
        int endMonth = 10;  
        int endDay = 1; // 周四  
        int totalDistance = 0;  
  
        // 计算开始日期到结束日期之间的每一天  
        for (int year = startYear; year <= endYear; year++) {  
            for (int month = (year == startYear) ? startMonth : 1; month <= (year == endYear) ? endMonth : 12; month++) {  
                int daysInMonth = getDaysInMonth(year, month);  
                for (int day = (year == startYear && month == startMonth) ? startDay : 1;  
                     day <= (year == endYear && month == endMonth) ? endDay : daysInMonth;  
                     day++) {  
                    // 检查是否是周一或者月初(1日)  
                    if (day == 1 || isMonday(year, month, day)) {  
                        totalDistance += 2;  
                    } else {  
                        totalDistance += 1;  
                    }  
                }  
            }  
        }  
  
        System.out.println(totalDistance); // 输出总距离  
    }  
  
    // 获取某年某月的天数,考虑闰年  
    private static int getDaysInMonth(int year, int month) {  
        switch (month) {  
            case 2: // 2月  
                if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {  
                    return 29; // 闰年  
                } else {  
                    return 28; // 非闰年  
                }  
            case 4:  
            case 6:  
            case 9:  
            case 11:  
                return 30;  
            default:  
                return 31;  
        }  
    }  
  
    // 判断某天是否是周一  
    private static boolean isMonday(int year, int month, int day) {  
        Calendar calendar = Calendar.getInstance();  
        calendar.set(year, month - 1, day); // 注意Calendar的月份是从0开始的  
        return calendar.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY;  
    }  
}

这段代码使用getDaysInMonth方法来获取每个月的天数,考虑了闰年的情况。isMonday方法用于判断某一天是否是周一。代码通过遍历从起始日期到结束日期之间的每一天,并根据题目的规则来计算总跑步距离。

请注意,在Java中,Calendar类的月份是从0开始的,因此在调用calendar.set方法时,需要将月份减1。此外,这段代码假设起始日期是周六,结束日期是周四,因此不需要对起始和结束日期进行额外的处理。如果起始或结束日期不是周末,那么可能需要额外的逻辑来处理这些边界情况。


这段代码定义了一个isMonday方法,用于判断给定的日期(年、月、日)是否是周一。下面是对这段代码的详细解释:

  1. 方法定义:

private static boolean isMonday(int year, int month, int day)

这个方法接收三个整数参数:year(年份)、month(月份)和day(日期)。方法的返回类型是boolean,即它会返回truefalse,表示给定的日期是否是周一。
2. 创建Calendar实例:

Calendar calendar = Calendar.getInstance();

Calendar是Java中用于处理日期和时间的类。Calendar.getInstance()方法返回当前日期和时间的Calendar`对象。
3. 设置日期:

calendar.set(year, month - 1, day);

这里,我们使用calendar.set方法来设置Calendar对象的日期。需要注意的是,Calendar类的月份是从0开始的,即1月对应的是0,2月对应的是1,依此类推。因此,我们需要将传入的month参数减1,以确保设置正确的月份。
4. 判断是否是周一:

return calendar.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY;

Calendar.DAY_OF_WEEK是一个字段,用于表示一周中的某天。它返回一个整数,其中Calendar.SUNDAY是1,Calendar.MONDAY是2,依此类推,直到Calendar.SATURDAY`是7。

calendar.get(Calendar.DAY_OF_WEEK)会返回calendar对象所表示的那一天的整数值。然后,我们检查这个值是否等于Calendar.MONDAY(即2)。如果相等,表示那天是周一,方法返回true;否则,返回false

综上所述,isMonday方法会根据传入的年、月、日参数来判断那天是否是周一,并返回相应的布尔值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/532320.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布式文件系统

引言&#xff1a; GFS是一个可扩展的分布式文件系统&#xff0c;用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上&#xff0c;并提供容错功能。它可以给大量的用户提供总体性能较高的服务。 一、 GlusterFS 概述 1.1 GlusterFS简介 GlusterFS 是…

7B超越百亿级,北大开源aiXcoder-7B最强代码大模型,企业部署最佳选择

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 ​ 对代码大模型而言&#xff0c;比能做编程题更重要的&#xff0c;是看是能不能适用于企业…

LMDoply部署实战

使用LMDeoply部署各类开源大模型&#xff0c;进行推理实践。 一. 环境准备 1. 创建Conda环境 studio-conda -t lmdeploy -o pytorch-2.1.2 2. 安装LMDeploy 激活刚刚创建的虚拟环境。 conda activate lmdeploy 安装0.3.0版本的lmdeploy。 pip install lmdeploy[all]0.3.…

day77 JSPServlet

知识点&#xff1a; 1Web工程 2JSP是什么&#xff1f;JSP页面包含哪些内容&#xff1f;JSP页面执行原理 3JSP九大内置对象&#xff0c;及四个作用域 4什么是SERVLET&#xff1f;及servlet相关API 5MVC模型 6EL表达式及JSTL标签库的使用 7在JSP页面实现分页和多条件查询 …

Harmony鸿蒙南向驱动开发-Watchdog

看门狗&#xff08;Watchdog&#xff09;&#xff0c;又称看门狗计时器&#xff08;Watchdog timer&#xff09;&#xff0c;是一种硬件计时设备。一般有一个输入、一个输出&#xff0c;输入叫做喂狗&#xff0c;输出连接到系统的复位端。当系统主程序发生错误导致未及时清除看…

vue实现从本地上传头像功能

上传头像&#xff1a; <template><div><el-card class"box-card"><div slot"header" class"clearfix"><span>更换头像</span></div><div><!-- 图片、用来展示用户选择的头像 --><img…

Path Aggregation Network for Instance Segmentation

PANet 摘要1. 引言2.相关工作3.框架 PANet 最初是为 proposal-based 实例分割框架提出来的&#xff0c;mask 是实例的掩码&#xff0c;覆盖了物体包含的所有像素&#xff0c;proposal 在目标检测领域是可能存在目标的区域。在实例分割中&#xff0c;首先利用RPN(Region Proposa…

业务逻辑漏洞(靶场) fiddler

目录 fiddler简介&#xff1a; 业务逻辑漏洞&#xff1a; fiddler下载 靶场&#xff1a; 实验一 ​编辑实验二&#xff08;ps 更改实验url会变&#xff0c;fiddler没抓到东西看看代理改没改&#xff09; 实验三 实验四 fiddler简介&#xff1a; 一款网络抓包工具&#…

基于Java+SpringBoot+Vue养老院管理系统(源码+文档+部署+讲解)

一.系统概述 随着信息时代的来临&#xff0c;过去的传统管理方式缺点逐渐暴露&#xff0c;对过去的传统管理方式的缺点进行分析&#xff0c;采取计算机方式构建养老院管理系统。本文通过课题背景、课题目的及意义相关技术&#xff0c;提出了一种社区活动、活动记录、床位信息、…

what is tty?

waht is tty? 黑话&#xff1a;TTY 为什么使用Linux的时候CtrlC就会终止一个命令运行,ta是如何设置的? stty -a 桌面切换 CTRL ALT F1 – 锁屏 CTRL ALT F2 – 桌面环境 CTRL ALT F3 – TTY3 CTRL ALT F4 – TTY4 CTRL ALT F5 – TTY5 CTRL ALT F6 – TTY6

【Linux】初识Linux,虚拟机安装Linux系统,配置网卡

前言 VMware软件&#xff1a;首先&#xff0c;确保您已经下载了VMware Workstation软件并安装在电脑上。VMware Workstation是一款功能强大的虚拟化软件&#xff0c;它允许在单一物理机上运行多个操作系统。 Linux镜像文件&#xff1a;需要准备一个Linux操作系统的镜像文件。…

AUS GLOBAL(澳洲环球) 与 Gresini Racing MotoGP 达成全球战略合作

国际知名的零售外汇交易平台 AUS GLOBAL 宣布与知名世界摩托车锦标赛 MotoGP 的Gresini Racing车队达成全球战略合作伙伴关系&#xff0c;成为官方赞助商及官方指定线上外汇交易平台。AUS GLOBAL 于 2024 年起与 Gresini Racing MotoGP 车队展开各项合作项目&#xff0c;为 Gre…

密码学与密码安全:理论与实践

title: 密码学与密码安全&#xff1a;理论与实践 date: 2024/4/10 21:22:31 updated: 2024/4/10 21:22:31 tags: 密码学加密算法安全协议密码分析密码安全实际应用未来发展 第一章&#xff1a;密码学基础 1.1 密码学概述 密码学是研究如何保护信息安全的学科&#xff0c;旨在…

InternLM2 技术报告——社区翻译版

InternLM2技术报告于近日正式对外发布&#xff0c;不少社区大佬自发地参与到报告的翻译与解读中来。本文为社区用户翻译的InternLM2技术报告原文&#xff0c;分享给大家~ 论文地址&#xff1a; https://arxiv.org/pdf/2403.17297.pdf 摘要 大型语言模型&#xff08;LLMs&…

uniapp开发Android安卓应用打包配置及使用高德地图配置获取定位失败的问题解决(踩坑)

前言 要获取高德定位,需要使用自定义基座运行(默认基座是dcloud封装好的,自带高德地图配置),但是我们正式发布还是需要使用自己的配置,所以提前配置好防止上线各种bug; 步骤1 首先我们需要登录dcloud开发者中心申请一个Android云端证书,然后需要把证书信息配置到自定义基座中…

【MySQL数据库 | 第二十五篇】深入探讨MVCC底层原理

前言&#xff1a; 在当今互联网时代&#xff0c;数据库扮演着数据存储和管理的关键角色。对于大型Web应用程序和企业级系统而言&#xff0c;高效地处理并发访问和事务管理是至关重要的。多版本并发控制&#xff08;MVCC&#xff09;是一种数据库事务处理的技术&#xff0c;旨…

第十四届蓝桥杯省赛真题-幸运数

代码及解析: #include <iostream> using namespace std;bool check(int x) {int tmpx,len0;while(tmp){len;tmp/10;}//算位数的方法 if(len%21)return 0;//直接retrun 0 int tlen/2;int ans10,ans20;while(t--){ans1x%10;//加每一位x/10; }while(x){ans2x%10;x/10;}if(…

【Keil5-编译4个阶段】

Keil5-编译 ■ GCC编译4个阶段■ 预处理->编译->汇编->链接■ GNU工具链开发流程图■ armcc/armasm&#xff08;编译C和汇编&#xff09;■ armlink &#xff08;链接&#xff09;■ armar &#xff08;打包&#xff09;■ fromelf &#xff08;格式转换器&#xff09…

element UI 设置type=“textarea“ 禁止输入框缩放

背景 在 Element UI 中&#xff0c;当您使用 el-input 组件并设置 type"textarea" 时&#xff0c;默认情况下&#xff0c;用户可以通过拖动输入框的右下角来调整其大小。如果您想禁止这种缩放行为&#xff0c;需要使用 CSS 来覆盖默认的浏览器行为。 注意上图&#x…