当前位置: 首页 > news >正文

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方法会根据传入的年、月、日参数来判断那天是否是周一,并返回相应的布尔值。

相关文章:

  • 蓝桥杯 2022 省 B 洛谷 P8787 砍竹子
  • Terminal常见快捷命令(持续更新)
  • 利用Leaflet + React:构建WEBGIS
  • 2024第十九届中国(温州)机械装备展9月20-22日举行
  • IDEA 宝贝插件
  • 靡语IT:Bootstrap 简介
  • 【Vue】组件
  • 集合类多线程(JUC)
  • Redis 的主从复制、哨兵和cluster集群
  • 腾讯云短暂崩溃2小时
  • Leetcode 150. 逆波兰表达式求值和Leetcode 55. 跳跃游戏
  • 原型设计模式的学习
  • Linux生态系统:探索Linux的开源世界
  • 二:什么是RocketMQ
  • 【Erlang】【RabbitMQ】Linux(CentOS7)安装Erlang和RabbitMQ
  • [译]如何构建服务器端web组件,为何要构建?
  • 2017前端实习生面试总结
  • ES6系列(二)变量的解构赋值
  • go append函数以及写入
  • JavaScript学习总结——原型
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Python学习之路13-记分
  • Redis在Web项目中的应用与实践
  • Solarized Scheme
  • sublime配置文件
  • v-if和v-for连用出现的问题
  • 欢迎参加第二届中国游戏开发者大会
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 聊一聊前端的监控
  • 巧用 TypeScript (一)
  • 容器服务kubernetes弹性伸缩高级用法
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 思维导图—你不知道的JavaScript中卷
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 微信小程序实战练习(仿五洲到家微信版)
  • 新手搭建网站的主要流程
  • Python 之网络式编程
  • ​MySQL主从复制一致性检测
  • # Apache SeaTunnel 究竟是什么?
  • #if和#ifdef区别
  • (02)vite环境变量配置
  • (2)(2.10) LTM telemetry
  • (7)STL算法之交换赋值
  • (day6) 319. 灯泡开关
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (二)windows配置JDK环境
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (分布式缓存)Redis分片集群
  • *1 计算机基础和操作系统基础及几大协议
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .Net多线程总结
  • .net反编译的九款神器
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • @Documented注解的作用
  • @TableId注解详细介绍 mybaits 实体类主键注解