### JAVA经典算法90题(十四):计算一年中的第几天 #### 一、问题描述 本题目要求根据用户输入的某年某月某日,计算出这一天是该年的第几天。程序首先需要判断该年是否为闰年,然后根据月份来累加天数。 #### 二、核心知识点解析 ##### 1. 闰年的判断规则 根据公历的闰年规则: - 能被400整除的年份一定是闰年; - 不能被400整除但能被4整除且不能被100整除的年份也是闰年; - 其他情况则不是闰年。 例如,2000年是闰年,而1900年不是闰年,但2004年是闰年。 ##### 2. 月份与天数的对应关系 - 1、3、5、7、8、10、12月有31天; - 4、6、9、11月有30天; - 2月在普通年有28天,在闰年有29天。 #### 三、代码分析 ##### 1. 主类 `T14` 主类`T14`实现了程序的主要逻辑: - **输入处理**:通过`InputStreamReader`和`BufferedReader`读取用户的输入,包括年、月、日。 - **调用方法**:创建`Fangfa`对象,并调用其方法来判断是否为闰年以及计算到指定日期为止的天数。 - **输出结果**:输出计算后的结果,即输入日期是当年的第几天。 ##### 2. 辅助类 `Fangfa` 辅助类`Fangfa`包含了两个方法: - **闰年判断方法 `runN`** - 输入参数:年份`n` - 返回值:布尔值,表示是否为闰年 - 实现逻辑:根据上述闰年判断规则实现。 - **天数计算方法 `tianShu`** - 输入参数:是否为闰年`ft`,当前月份`n` - 返回值:计算到指定月份为止的累计天数 - 实现逻辑: - 根据是否为闰年来决定2月的天数。 - 遍历1至当前月份减1的所有月份,累加每个月的天数。 #### 四、扩展知识点 ##### 1. Java中的日期处理 Java提供了多种处理日期的方式,如`Date`, `Calendar`, `LocalDate`等API。本例中使用了基本的整数运算来进行日期计算,但在实际项目中可能更倾向于使用这些内置API。 ##### 2. 异常处理 在本例中,使用了异常捕获机制来处理可能出现的错误输入。在实际开发中,应该更加细致地考虑各种可能的异常情况,如非数字输入、超出范围的日期等。 ##### 3. 用户交互设计 虽然本例简单地通过控制台读取输入并输出结果,但在实际应用中,可能还需要考虑更友好的用户界面,如图形界面或Web界面等。 #### 五、总结 通过这个简单的程序,我们不仅了解了如何在Java中实现基本的日期计算功能,还学习了闰年判断的方法和日期相关的基础数学计算技巧。这对于进一步学习更复杂的日期处理算法和函数是非常有益的。此外,通过对代码的分析,还可以加深对Java语言特性的理解,特别是异常处理机制的理解。
//功能:输入某年某月某日,判断这一天是这一年的第几天
//日期:2012.11.02
/*分析:闰年:①、普通年能整除4且不能整除100的为闰年。(如2004年就是闰年,1900年不是闰年)②、世纪年能整除400的是闰年。(如2000年是闰年,1900年不是闰年)
月份:1、3、5、7、8、10、12,31天,4、6、9、11,30天,2闰29天
*/
import java.io.*;
public class T14
{
public static void main(String []args)
{
try
{
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader bf=new BufferedReader(isr);
System.out.println("请输入年:");
String str=bf.readLine();
int nian=Integer.parseInt(str);
System.out.println("请输入月:");
str=bf.readLine();
int yue=Integer.parseInt(str);
System.out.println("请输入日:");
str=bf.readLine();
int ri=Integer.parseInt(str);
Fangfa fangFa=new Fangfa();
int count=fangFa.tianShu(fangFa.runN(nian),yue);
System.out.println("这一天是这一年的第"+(count+ri)+"天");
}
catch(Exception e)
- 粉丝: 4
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助