Java编程输出万年历
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
### Java编程输出万年历 #### 背景与目的 在计算机科学中,编写一个程序来输出指定年份和月份的日历是一个经典的练习题目。它不仅能够帮助学习者掌握基本的编程技能,如循环、条件判断等,还能够加深对日期计算逻辑的理解。本篇内容将基于提供的代码片段进行详细解析,旨在理解如何使用Java语言来实现这样一个万年历程序。 #### 代码解读 ##### 1. 导入必要的类库 ```java import java.util.Scanner; ``` 这里导入了`java.util.Scanner`类,该类提供了从控制台读取用户输入的功能,是实现交互式程序的基础。 ##### 2. 定义主类与方法 ```java public class test { public static void main(String[] args) { //... } } ``` 定义了一个名为`test`的公共类,并在其内部声明了一个`main`方法。在Java中,程序的执行从`main`方法开始。 ##### 3. 用户输入年份和月份 ```java Scanner a = new Scanner(System.in); System.out.println("请输入年份"); int nian = a.nextInt(); Scanner e = new Scanner(System.in); System.out.println("请输入月份"); int yue = e.nextInt(); ``` 通过创建两个`Scanner`对象,分别读取用户输入的年份和月份。值得注意的是,这里创建了两个`Scanner`对象,但实际上只需要一个即可。 ##### 4. 计算自1900年以来的总天数 ```java int sum = 0; for (int i = 1900; i < nian; i++) { if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) { sum += 366; } else { sum += 365; } } ``` 这段代码用于计算自1900年以来到当前年份的总天数。其中,通过判断是否为闰年来决定每年增加365天还是366天。闰年的判断规则是:年份能被4整除但不能被100整除,或者能被400整除。 ##### 5. 计算当月之前的所有月份的天数 ```java for (int j = 1; j < yue; j++) { if (j == 2) { if (2019 % 4 == 0 && 2019 % 100 != 0 || 2019 % 400 == 0) { sum += 29; } else { sum += 28; } } else if (j == 4 || j == 6 || j == 9 || j == 11) { sum += 30; } else { sum += 31; } } ``` 这一部分代码计算了当前月份之前所有月份的天数总和。特别地,对于2月的处理,这里使用了一个固定的年份2019来进行闰年判断,这显然是不正确的。正确的做法应该是使用用户输入的年份`nian`来进行判断。 ##### 6. 输出日历 ```java int weekday = sum % 7; System.out.println("日\t一\t二\t三\t四\t五\t六\t"); for (int b = 1; b <= weekday; b++) { System.out.print("\t"); } int tian = 0; switch (yue) { case 2: if (nian % 4 == 0 && nian % 100 != 0 || nian % 400 == 0) { tian = 29; } else { tian = 28; } break; case 4: case 6: case 9: case 11: tian = 30; break; default: tian = 31; } for (int d = 1; d <= tian; d++) { if (sum % 7 == 6) { System.out.print(d + "\n"); } else { System.out.print(d + "\t"); } sum++; } ``` 根据总天数计算出一周中的哪一天作为起始日,然后输出日历表头。接着,根据当前月份确定该月有多少天,并依次输出每一天。每行打印完7天后换行,以形成标准的日历格式。 #### 总结 以上就是基于给定代码实现的一个简单的万年历程序。通过对代码的逐行分析,我们可以了解到如何在Java中处理日期相关的计算以及如何通过用户输入来动态生成日历。需要注意的是,原始代码中存在一些小问题,例如使用固定年份进行闰年判断等,这些都需要在实际应用时加以修正。此外,为了提高程序的健壮性和可维护性,还可以考虑增加错误处理机制、优化代码结构等方面的工作。
- 粉丝: 364
- 资源: 29
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- API网关 vs IDAAS网关 vs WAF,以及API网关在微服务中的应用
- 360T7路由集客AP固件
- meltdown/spectre处理器漏洞知识点整理
- AWDAWDWADWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
- 15000个英文单词, SQLite3数据库,字段为 单词, 翻译,各种时态,复数形式,例句
- Replicate 的 Python 客户端.zip
- Raven 是 Sentry 的旧版 Python 客户端(getsentry.com),已被 sentry-python 取代.zip
- python打包创造-pycache-文件
- 基于Hadoop平台分析准大学生手机网购偏好与趋势
- 基于Python和ECharts的京东手机销售数据分析与可视化