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

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

输入: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
相关推荐
没有梦想的咸鱼185-1037-166320 分钟前
基于R语言机器学习方法在生态经济学领域中的实践技术应用
开发语言·机器学习·数据分析·r语言
a5876922 分钟前
消息队列(MQ)初级入门:详解RabbitMQ与Kafka
java·分布式·microsoft·面试·kafka·rabbitmq
千里码aicood34 分钟前
【springboot+vue】党员党建活动管理平台(源码+文档+调试+基础修改+答疑)
java·数据库·spring boot
Chan1638 分钟前
【智能协同云图库】基于统一接口架构构建多维度分析功能、结合 ECharts 可视化与权限校验实现用户 / 管理员图库统计、通过 SQL 优化与流式处理提升数据
java·spring boot·后端·sql·spring·intellij-idea·echarts
先做个垃圾出来………43 分钟前
差分数组(Difference Array)
java·数据结构·算法
向上的车轮1 小时前
基于go语言的云原生TodoList Demo 项目,验证云原生核心特性
开发语言·云原生·golang
The Chosen One9851 小时前
C++ : AVL树-详解
开发语言·c++
PH_modest1 小时前
【Qt跬步积累】—— 初识Qt
开发语言·qt
BillKu1 小时前
Java核心概念详解:JVM、JRE、JDK、Java SE、Java EE (Jakarta EE)
java·jvm·jdk·java ee·jre·java se·jakarta ee
hansang_IR1 小时前
【题解】洛谷 P4286 [SHOI2008] 安全的航线 [递归分治]
c++·数学·算法·dfs·题解·向量·点积