栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2020蓝桥杯省赛跑步训练

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2020蓝桥杯省赛跑步训练

文章目录

前言一、题目

运行结果:8879 二、代码


前言

看了网上很多的题解,大多数都是利用自定义数组来代表闰年和非闰年,然后判断那年是闰年,总觉得这种方法有点繁杂,就想说能不能利用自带的日期类来直接判断,于是就想到了Calender类,他可以直接判断题目要求的周一和每月一号。然后就是解决最核心的问题,每月的天数不一样,且闰年和非闰年的2月天数也不一样。由于Calender类没有自带判断每月天数的方法,就想到用当月的上一个月的第一天减去一天就得到了当月的总天数。


一、题目

运行结果:8879
二、代码
import java.util.Calendar;

public class 跑步训练 {

	//获取当月天数的函数
	public static int getDay(int year ,int month) {
		Calendar calendar1=Calendar.getInstance();
		calendar1.set(Calendar.YEAR,year);
		//要设置为下一个月
		calendar1.set(Calendar.MONTH, month+1);
		calendar1.set(Calendar.DAY_OF_MONTH, 1);
		//再减去一天就可以得到当月的最后一天,即当月的总天数
		calendar1.add(Calendar.DAY_OF_MONTH,-1);
		int day=calendar1.get(Calendar.DAY_OF_MONTH);
		return day;
	}
	//主函数
	public static void main(String[] args) {
		Calendar calendar=Calendar.getInstance();
		//初始跑步距离
        int km=0;
        //遍历2000年到2019年
        for (int year = 2000; year <= 2019 ; year++) {
        	calendar.set(Calendar.YEAR,year);
        	for (int Month = 0; Month < 12; Month++) {
        		calendar.set(Calendar.MONTH,Month);
        		//调用获取当月天数的函数
        		int day=getDay(year,Month);
        		for(int today=1;today<=day;today++) {
        			calendar.set(Calendar.DAY_OF_MONTH,today);
        			//题目条件当月的一号或者周一
        			if(calendar.get(Calendar.DAY_OF_WEEK)==2 || today==1){
                        km+=2;
                    }else {
        				km++;
        			}
        		}
			}
        }
        //2020年只要到9月,所以另外再写一遍
        calendar.set(Calendar.YEAR,2020);
    	for (int Month = 0; Month < 9; Month++) {
    		calendar.set(Calendar.MONTH,Month);
    		int day=getDay(2020,Month);
    		for(int today=1;today<=day;today++) {
    			calendar.set(Calendar.DAY_OF_MONTH,today);
    			if(calendar.get(Calendar.DAY_OF_WEEK)==2 || calendar.get(Calendar.DAY_OF_MONTH)==1){
                    km+=2;
                }else {
    				km++;
    			}
    		}
		}
		//十月只有一号,懒得再设置一遍判断,直接在结果加2
        System.out.println(km+2);
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/785330.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号