import java.util.*;
public class Calendar_Month {
int week; //存储某月的第一天是周几
int []dayofP = {31,28,31,30,31,30,31,31,30,31,30,31}; //平年每月多少天
int []dayofR = {31,29,31,30,31,30,31,31,30,31,30,31}; //闰年每月多少天
int dayofM; //所要求月份的最大天数
int year,month; //用于存储年和月的数值
GregorianCalendar objC; //创建一个日历的实例
/**无参数的构造方法,获得当前时间*/
public Calendar_Month(){
objC = new GregorianCalendar();
}
//设置该月的第一天是周几,以及设置该月的最大天数
void setDay(int[] a){
//设置该月的第一天是周几
if (a.length == 0){
objC.set(Calendar.DAY_OF_MONTH,1);
week = objC.get(Calendar.DAY_OF_WEEK);
month = objC.get(Calendar.MONTH);
year = objC.get(Calendar.YEAR);
}
else{
month = a[1];
year = a[0];
objC.set(year,month-1,1);
week = objC.get(Calendar.DAY_OF_WEEK);
}
//设置该月的最大天数
if(objC.isLeapYear(year)){
dayofM = dayofR[month - 1];
}
else{
dayofM = dayofP[month - 1];
}
}
/**此方法用于显示日历*/
void display(){
System.out.println("\t\t\t " + year + " 年 " + toDaXie(month) + " 月");
System.out.println("\t日\t一\t二\t三\t四\t五\t六");
int len = week-1;
for(int i = 0; i < week-1; i++){
System.out.print("\t ");
}
for (int i = 1; i <= dayofM; i++) {
System.out.print("\t"+i);
len++;
if(len == 7){
System.out.println();
len=0;
}
}
}
public String toDaXie(int n){
switch (n) {
case 1:
return "一";
case 2:
return "二";
case 3:
return "三";
case 4:
return "四";
case 5:
return "五";
case 6:
return "六";
case 7:
return "七";
case 8:
return "八";
case 9:
return "九";
case 10:
return "十";
case 11:
return "十一";
case 12:
return "十二";
default:
return " ";
}
}
public static void main(String[] args) {
Calendar_Month objCa = new Calendar_Month();
Scanner scanner = new Scanner(System.in);
int[] a = new int[2];
a[0] = scanner.nextInt();
a[1] = scanner.nextInt();
objCa.setDay(a);
objCa.display();
}
}
输出结果为:
2010 5
2010 年 五 月
日 一 二 三 四 五 六
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
附从网上找的一个程序:StdOut.print和System.out.println()一样功能,可代替
public class Main {
public static int getWeek(int yr, int mo, int day) {
int a = (14 - mo) / 12, y = yr - a, m = mo + (12 * a) - 2;
return (day + y + y / 4 - y / 100 + y / 400 + (31 * m) / 12) % 7;
}
public static int getMonth(int y, int m) {
if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8
|| m == 10 || m == 12)
return 31;
if (m == 4 || m == 6 || m == 9 || m == 11)
return 30;
if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
return 29;
else
return 28;
}
public static void menology() {
int year = StdIn.readInt(), month = StdIn.readInt();
String[] showMonth = { "一", "二", "三", "四", "五", "六", "七", "八", "九",
"十", "十一", "十二" };
StdOut.println(" " + year + "年" + showMonth[month - 1] + "月");
StdOut.print("日" + " " + "一" + " " + "二" + " " + "三" + " " + "四" + " "
+ "五" + " " + "六");
System.out.println();
int m = getMonth(year, month);
for (int i = 0; i < m; i++) {
int w = getWeek(year, month, (i + 1));
if (i == 0) {
for (int j = w; j > 0; j--)
StdOut.print(" ");
}
if (i < 9)
StdOut.print(" " + (i + 1) + " ");
else
StdOut.print((i + 1) + " ");
if ((w == 6) || ((i + 1) == m))
StdOut.println();
}
}
public static void main(String[] args) {
menology();
}}
分享到:
相关推荐
Java输出月份日历知识点详细说明: 1. Java基础:Java是一种广泛使用的面向对象编程语言,具有跨平台的...初学者通过学习这个小程序,不仅可以掌握如何用Java输出日历,还能够学习到一些编程时常用的基本概念和技术。
3. **模板设计**:月历的样式和布局可以通过预先设计好的模板来实现,可以使用Java的绘图API在图像上添加文字、日期和装饰元素。 最后,水印输出涉及到图像处理的另一个方面: 1. **水印添加**:在图像上添加水印...
本程序为一个基于Java实现的日历生成器,用户可以通过输入指定的年份与月份,在控制台上输出对应月份的日历。输出格式包括一周七天的名称(“日”、“一”、“二”、“三”、“四”、“五”、“六”),以及具体的...
首先,月历的输出是通过Java的`Calendar`类或者Java 8中的`java.time`包来实现的。`Calendar`是Java传统的日期和时间API,它提供了获取当前日期、创建特定日期、转换日期格式等方法。要输出月历,我们需要遍历指定...
本文将详细探讨基于Java实现万年历的相关知识点。 首先,我们需要了解Java中的日期时间API。在Java 8之前,日期时间处理主要依赖`java.util.Date`和`java.util.Calendar`类,这两个类虽然功能全面,但使用起来较为...
4. **输出月历**:通过`calendar`方法实现,该方法会根据上述计算结果输出月历。 #### 三、详细解析 ##### 1. 闰年的判断 闰年的判断是日历程序中的一个重要组成部分。闰年规则如下: - 如果年份能被4整除但不能...
在设计用户界面时,可以使用Java Swing或JavaFX创建图形界面,展示日历视图。Swing提供了`JTable`或`JCalendar`组件,而JavaFX有`TableView`和`DatePicker`等,它们可以方便地构建出交互式的日历应用。 考虑到...
实验的第三个任务要求按照学生成绩的降序打印输出学生信息,可以使用Java内置的`Arrays.sort()`方法,配合自定义比较器进行排序,或者使用冒泡、选择、插入等排序算法实现。 5. 对象和类:在Java中,`Calendar`类是...
通过这个报告,我们可以看到JAVA在实现复杂应用程序时的灵活性和适用性,以及如何使用JAVA API,如`GregorianCalendar`,来处理日期和时间。同时,它也强调了需求分析、设计和实现的步骤在软件开发中的重要性。
2. **月历显示**:应用能够以月历的形式展示日期,这通常会用到Java的`java.time`包,如`YearMonth`类来处理年月信息,以及`DayOfWeek`类来表示星期几。此外,可能还会自定义绘制组件,以展示特定格式的日历视图。 ...
Java是一种广泛使用的面向对象的编程语言,以其平台无关性、高效性和丰富的类库而闻名。作业通常旨在帮助学生巩固课堂上的理论知识,并通过实践来提升编程技能。Java第二次和第三次作业可能涵盖了各种主题,如基础...
综上所述,通过这段代码的学习,我们不仅可以了解到如何在Java中实现基本的控制台输入输出功能,还可以深入了解如何计算特定日期的相关知识,并掌握如何输出格式化的日历信息。这对于学习Java编程语言以及提高日历...
如果使用GUI,可以借助Java Swing或JavaFX库创建窗口和按钮。 5. **日期操作**:实现前后翻页功能,需要用到`plusDays()`、`minusDays()`、`plusMonths()`和`minusMonths()`等方法来改变日期。同时,需要检查是否为...
通过分析和学习这些源代码,开发者不仅可以提升Java编程技能,还能了解到如何将复杂问题分解为简单的模块,以及如何设计和实现具有实际功能的应用程序。对于初学者来说,这是一个很好的实践项目,可以帮助他们巩固...
本篇报告涉及的是使用Java编程语言实现两个功能:一是根据用户输入的年份输出该年的日历,二是根据用户输入的日期,输出该天对应的星期。以下是相关知识点的详细说明: 1. **Java 语法和程序结构**: Java程序的...
- **实验内容**:编写一个日历程序,计算任意一天是星期几,计算两个日期之间的天数,输出月历,进行日期格式化。 - **学时**:4小时 - **实验类型**:设计型 - **备注**:选做实验,第7章结束后进行。 #### 实验4...
《Java实现万年历课程设计报告》 在本次课程设计中,我们的目标是利用Java语言构建一个万年历程序。这个项目旨在巩固和深化我们对Java基础知识的理解,同时通过实践提高编程技能。万年历是一个相对简单的应用,它...
【JAVA万年历课程设计报告】是一篇关于利用JAVA编程实现万年历功能的课程设计报告,涵盖了需求分析、概要设计、模块功能及程序说明等多个方面。此报告旨在展示如何利用JAVA语言创建一个图形用户界面,以实现日期与...
要根据命令行参数打印月历,可以利用该类提供的`get`方法获取日期信息,然后结合循环结构和条件判断来格式化并输出月历。 7. 题目要求创建一个Java程序,展示Employee和Manager类的继承关系,并根据给定数据计算并...