最近想到大学期间写的一个万年历小程序,写出来之后还很自豪。现在想想当时的程序逻辑混杂,结构紊乱,就在空闲时间重新写了个。本来以为二十多分钟就能写好了,结果写了一个多小时。。拿出来给我sdu大一的学弟学妹们参考一下吧。
ps:没有加入输入异常的处理,即默认输入正确的年份格式,如:2000。另外,最早查询年份到(含)1950年。
package JustForFun;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class JustForTest {
public static void main(String argus[]) throws IOException {
int year, count = 1, month = 1, index;
System.out.println("输入你想查询的年份,我将输出这一年的日历,嘿嘿");
BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
year = Integer.valueOf(reader.readLine());
System.out.println(year + "年的日历:");
index = spaceCount(year)+1;
while (month <= 12) {
System.out.println(month + "月:");
System.out.println("周日 周一 周二 周三 周四 周五 周六");
printSpace(index - 1);
while (count <= daysMonth(month, year)) {
if (count < 10)
System.out.print(count + " ");
else System.out.print(count + " ");
index++;
count++;
if (index == 8) {
index = 1;
System.out.println();
}
}
if (index != 1)
System.out.println();
count = 1;
month++;
}
}
//计算year的i月有多少天
private static int daysMonth(int i, int year) {
int[] month31 = {1, 3, 5, 7, 8, 10, 12};
int[] month30 = {4, 6, 9, 11};
for (int l = 0; l < month31.length; l++) {
if (i == month31[l])
return 31;
}
for (int l = 0; l < month30.length; l++) {
if (i == month30[l])
return 30;
}
if (daysCount(year) == 365)
return 28;
return 29;
}
//每个月从周几开始
private static void printSpace(int count) {
for (int i = 0; i < count; i++)
System.out.print(" ");
}
//计算year有多少天
private static int daysCount(int year) {
if (year % 400 == 0)
return 366;
if (year % 100 == 0)
return 365;
if (year % 4 == 0)
return 366;
return 365;
}
//输入年份的一月从周几开始
private static int spaceCount(int year) {
int years = year - 1950;
int days = 0;
for (int i = 0; i < years; i++) {
days += daysCount(1950 + i);
}
return days % 7;
}
}
分享到:
相关推荐
### Java编写的小程序万年历知识点解析 #### 一、程序功能概述 此Java小程序的主要功能是根据用户输入的年份和月份动态生成并显示指定月份的日历。该程序不仅能够正确处理平年与闰年的差异,还能准确计算出每个月的...
Java 中使用 Calendar 类实现万年历 在 Java 中,使用 Calendar 类可以轻松地实现万年历的功能,无需手动判断年份是否为闰年或平年,也无需判断一个月有多少天。Calendar 类提供了多种方法来获取日期和时间信息,...
public class 万年历 { public static void main(String[] args){ Scanner input = new Scanner(System.in); int dayNum = 0; boolean isRn; int days=0; System.out.print("请输入年份:"); int year =...
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
本篇内容将基于提供的代码片段进行详细解析,旨在理解如何使用Java语言来实现这样一个万年历程序。 #### 代码解读 ##### 1. 导入必要的类库 ```java import java.util.Scanner; ``` 这里导入了`java.util....
firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载Applet的网页文件 第2章 示例描述:本章介绍开发Java的基础语法知识。 accumulationByDoWhile.java 用do~while语句写的累加程序 ...
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
本项目实现了一个简单的Java万年历程序,用户可以通过输入指定的年份和月份来查询该月的日历。程序首先会判断输入年份是否为闰年,并计算出指定月份的第一天是星期几,然后输出该月份的日历。 ### 2. 代码结构解析 ...
2个目标文件 摘要:Java源码,网络相关,UDP 基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式...
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
2个目标文件 摘要:Java源码,网络相关,UDP 基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式...
2.2.10 System.in对象和System.out对象 文件处理 3.1 创建或打开、关闭文件对象 3.2 关闭文件 3.3 read()方法 3.4 write()方法 3.5 其他操作文件的方法 4、Java异常处理 4.1 Java异常概念 4.2 异常类型 4.3 Java的...
本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...