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

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

输入: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
相关推荐
绿浪19841 分钟前
c# 中结构体 的定义字符串字段(性能优化)
开发语言·c#
HoneyMoose7 分钟前
Jenkins Cloudflare 部署提示错误
java·servlet·jenkins
阿丰资源12 分钟前
基于SpringBoot的物流信息管理系统设计与实现(附资料)
java·spring boot·后端
Predestination王瀞潞16 分钟前
Java EE3-我独自整合(第四章:Spring bean标签的常见配置)
java·spring·java-ee
overmind17 分钟前
oeasy Python 121[专业选修]列表_多维列表运算_列表相加_列表相乘
java·windows·python
资深数据库专家17 分钟前
总账EBS 应用服务器1 的监控分析
java·网络·数据库
房开民20 分钟前
可变参数模板
java·开发语言·算法
t***54439 分钟前
如何在现代C++中更有效地应用这些模式
java·开发语言·c++
_深海凉_39 分钟前
LeetCode热题100-最小栈
java·数据结构·leetcode
不知名的忻44 分钟前
Morris遍历(力扣第99题)
java·算法·leetcode·morris遍历