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

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

输入: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
相关推荐
波波七1 分钟前
SSM与Springboot是什么关系? -----区别与联系
java·spring boot·后端
myloveasuka3 分钟前
[Java]单列集合
android·java·开发语言
南梦浅4 分钟前
全过程步骤(从零到高可用企业网络)
开发语言·网络·php
mjhcsp5 分钟前
C++ 梯度下降法(Gradient Descent):数值优化的核心迭代算法
开发语言·c++·算法
ok_hahaha9 分钟前
java从头开始-黑马点评-基础篇
java·开发语言
吴声子夜歌12 分钟前
JavaScript——函数
开发语言·javascript·ecmascript
yunyun3212312 分钟前
跨语言调用C++接口
开发语言·c++·算法
m0_5180194815 分钟前
C++中的装饰器模式变体
开发语言·c++·算法
SuperEugene19 分钟前
Vue3 + Element Plus 中后台弹窗规范:开闭、传参、回调,告别弹窗地狱|Vue 组件与模板规范篇
开发语言·前端·javascript·vue.js·前端框架
SuperEugene22 分钟前
VXE-Table 4.x 实战规范:列配置 + 合并单元格 + 虚拟滚动,避坑卡顿 / 错乱 / 合并失效|表单与表格规范篇
开发语言·前端·javascript·vue.js·前端框架·vxetable