首页 > 编程语言 >程序算术题-5

程序算术题-5

时间:2024-12-20 23:02:58浏览次数:11  
标签:args 算术题 valueOf 31 30 程序 Integer odds

程序算术题-5

求这一天是在这一年的多少天

题目

输入某年某月某日,判断这一天是这一年的第几天?

逻辑

    /**
     * 求这一天是这一年的多少天
     * args[0] 年
     * args[1] 月
     * args[2] 日
     */

第一个输入参数作为年,第二个输入参数作为月,第三个输入参数作为日。

方法一

方法一采用的是变量计算的方式。

        Integer month = Integer.valueOf(args[1]);
        int odds = Math.floorDiv(month, 2);
        int evens = (Math.floorMod(month, 2) == 0) ? (odds - 1) : odds;
        int repEvent2OddCount = evens > 2 ? evens - 3 : 0;
        int repOdd2EventCount = odds > 3 ? odds - 4 : 0;
        System.out.println(Integer.valueOf(args[2]) + repOdd2EventCount * 30 + (odds - repOdd2EventCount) * 31 + ((evens >= 1 ? (Integer.valueOf(args[0]) % 4 == 0 ? 29 : 28) + repEvent2OddCount * 31 + (evens - 1 - repEvent2OddCount) * 30 : 0)));

用Integer.valueOf将输入的年月日String参数转化为Integer,方便后面的计算使用。

由于每4年一个闰年,闰年的2月份为29天,其它年份的2月份皆为28天,这里可以通过(Integer.valueOf(args[0]) % 4 == 0) ? 29 : 28对年份进行判断并为2月份的总天数设值。利用Math.floorDiv(month, 2)得出经过的单月数量以及(Math.floorMod(month, 2) == 0) ? (odds - 1) : odds得出经过的双月数量。

7月之前的双月是31天,单月是30天。从7月份开始的单月是31天,双月是30天。利用evens > 2 ? evens - 3 : 0和odds > 3 ? odds - 4 : 0分别计算出单双月天数互转的数量,repEvent2OddCount为双月天数需要转换的数量,repOdd2EventCount为单月天数需要转换的数量。

最后通过天数累加Integer.valueOf(args[2]) + repOdd2EventCount * 30 + (odds - repOdd2EventCount) * 31 + ((evens >= 1 ? (Integer.valueOf(args[0]) % 4 == 0 ? 29 : 28) + repEvent2OddCount * 31 + (evens - 1 - repEvent2OddCount) * 30 : 0))计算出总天数,这个总天数就是这天在这年的第几天。

方法二

方法二采用的是常量池的方式

        int[] month_date = new int[]{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30};
        Integer year = Integer.valueOf(args[0]);
        if (year % 4 == 0) {
            month_date[2] = 29;
        }
        int totalDate = 0;
        for (int i = 0; i < Integer.valueOf(args[1]); i++) {
            totalDate += month_date[i];
        }
        System.out.println(totalDate + Integer.valueOf(args[2]));

如果觉得方法一利用变量的方法未能理解,可以采用这种比较直观的方法,直接把上一个月份的天数定义成整数数组,数组索引为月份。由于1月份前面没有月份,所以它的值为0,2月份的值先采用28天,后面再对闰年另外做29天值的修改,数组如下new int[]{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30}。对闰年的判断(year % 4 == 0),如果是闰年则修改month_date[2] = 29。

然后就是对前面月份总天数的累计totalDate += month_date[i],最后再加上当月的天数totalDate + Integer.valueOf(args[2]),得到总天数,这个总天数就是这天在这年的第几天。

实例

这一天是一年的多少天
输入日期为2024年5月23日

144

计算出是2024年的第144天

代码

查看题目计算代码

标签:args,算术题,valueOf,31,30,程序,Integer,odds
From: https://blog.csdn.net/weixin_52767086/article/details/144438485

相关文章

  • # 2024-2025-1 20241310 《计算机基础与程序设计》第十三周学习总结
    2024-2025-120241310《计算机基础与程序设计》第十三周学习总结作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第一周作业这个作业的目标自学教材《C语言程序设计》第12章并完成云班课测试......
  • 2024-2025-1 20241407《计算机基础与程序设计》第十三周学习总结
    作业信息这个作业属于哪个课程2024-2025-1计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第十三周作业这个作业的目标学习结构体和数据结构基础相关知识点作业正文本博客教材学习内容总结《C语言程序设计》第五版第十二章主要介......
  • PortQry 命令行端口扫描程序版本 2.0 下载 PortQryV2.exe,这是一个命令行实用程序,可
    从Microsoft下载中心下载PortQry命令行端口扫描程序版本2.0---DownloadPortQryCommandLinePortScannerVersion2.0fromOfficialMicrosoftDownloadCenter使用PortQry命令行工具-WindowsServer|MicrosoftLearn 什么是PortQry?PortQry是一款由微软开......
  • springboot毕设 中医药院校科研会议系统 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着中医药事业的蓬勃发展,中医药院校在科研领域的交流与合作日益频繁。传统的会议组织与管理方式往往依赖于人工操作,不仅效率低下,而且容易出错,难以满......
  • springboot毕设 装饰工程管理系统——质量管理子系统 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着城市化进程的加快和居民生活水平的提高,装饰工程行业迎来了前所未有的发展机遇。然而,装饰工程行业的快速发展也带来了诸多挑战,尤其是质量管理方面......
  • 2024-2025-1 20241403 《计算机基础与程序设计》第十三周学习总结
    2024-2025-120241403《计算机基础与程序设计》第十三周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标结构体的定义结......
  • springboot毕设 在线项目管理 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,项目管理已经逐渐从传统的手工记录、纸质文档管理向数字化、在线化转型。在线项目管理作为现代企业管理的重要组成部分,通过......
  • springboot毕设 在线学习平台 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,教育领域正经历着深刻的变革。在线学习作为新兴的教育模式,以其便捷性、灵活性和资源丰富性,日益受到广大师生的青睐。特别是......
  • PowerShell 脚本的作用是通过调用 NGEN (Native Image Generator) 工具来优化 .NET 程
    $Env:PATH=[Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory()[AppDomain]::CurrentDomain.GetAssemblies()|%{ $pt=$_.Location if(!$pt){continue} if($cn++){''} $na=Split-Path-Leaf$pt Write-Host-ForegroundColorY......
  • springboot毕设 中华传统文化学习平台 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在全球化日益加深的今天,中华传统文化作为中华民族的瑰宝,不仅承载着丰富的历史底蕴,更蕴含着深邃的哲学思想与人文精神。然而,随着科技的飞速发展和生活......