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

问题描述:输入某年某月某天,判断这一天是这一年的第几天?

输入:2023,8,7

输出:219

实现思路:

1.使用Scanner类从控制台读取一行输入,该输入应为"年,月,日"格式的字符串。
2.使用split方法按逗号分割字符串,得到一个字符串数组。然后将这个数组中的每个元素转换为整数,分别代表年、月和日。
3.计算天数:有两种计算方式。
写法1(未使用):使用Java 8中引入的LocalDate类。通过LocalDate.of(year, month, days)创建一个LocalDate对象,然后调用getDayOfYear()方法直接获取该日期是这一年的第几天。这种方法利用了Java的日期时间API,简化了计算过程。
写法2(已使用):定义了一个包含每月天数的数组arr,然后遍历这个数组,累加前几个月的天数,再加上输入日期的日数,得到结果。在累加前,首先判断是否为闰年,如果是闰年,则二月天数加1。

代码实现:

java 复制代码
package com.ztt.exercise.Demo04;

import java.time.LocalDate;
import java.util.Scanner;
/*
 * 输入某年某月某天,判断这一天是这一年的第几天?
 * 输入:2023,8,7
 * 输出:219

 */

public class Demo03 {
	public static void main(String[] args) {
		try(Scanner input=new Scanner(System.in)){
			String line=input.nextLine();
			
			int result=getDayOfYear(line);
			System.out.println(result);
		}
		
	}
	
	public static int getDayOfYear(String dateStr) {
		//切割字符串
		String[] array=dateStr.split(",");
		
		//提取出"年月日"
		int year=Integer.parseInt(array[0]);
		int month=Integer.parseInt(array[1]);
		int days=Integer.parseInt(array[2]);
		
		//写法1
//		LocalDate date=LocalDate.of(year, month, days);
//		int ret=date.getDayOfYear();
		
		//写法2
		int[] arr= {31,28,31,30,31,30,31,31,30,31,30,31};
		
		//判断闰年
		if(year%4==0&&year%100!=0||year%400==0) {
			arr[1]++;//闰年二月有29天
		}
		int ret=0;
		for(int i=0;i<=month-2;i++) {
			ret+=arr[i];
		}
		ret+=days;
		
		return ret;
		
		
	}

}

输出结果:

java 复制代码
2023,8,7
219
相关推荐
慧都小项2 分钟前
MyEclipse 中创建和测试 JAX-RS REST 接口:从项目配置到 REST Explorer
java·restful·myeclipse·jax-rs
Wang's Blog2 分钟前
Java 项目实战: 交友项目 - 入门案例:编写 Dubbo 服务提供者
java·dubbo·交友
墨云安全19 分钟前
内网资产无法暴露到公网,怎么做安全检测?2026 年内网渗透测试的落地路径
开发语言·安全·网络安全·渗透测试·php
秋饼37 分钟前
Spring AI 2.0 结构化输出企业级实战:从 BeanOutputConverter 源码到生产级解析容错
java·ai·技术分享·后端开发
摇滚侠37 分钟前
《计算机是如何工作的:人人都能懂的计算机软硬件工作原理》第 9 章 机器码与汇编语言 阅读笔记 9
java·开发语言·笔记
Cc.Y44 分钟前
Java零基础入门:深入Java核心:文件IO与序列化全解
java·开发语言·python
拿本唠嗑AI研究1 小时前
本体工程实战指南:从建模到可维护的完整落地路径
java·人工智能·python·jena·ontology
YangYang9YangYan1 小时前
2027供应链计划校招:数学与应用数学专业如何把预测模型讲成业务决策?
人工智能·sql·算法
lambo mercy1 小时前
Day3:结构化输出
java·数据库·oracle
jsjzsl21 小时前
递归自改进系统(RSI)的本质是自发对称破缺:智能爆炸有界—— AI研发切记盲目投入
人工智能·python·算法