Java实现动态日历效果

网友投稿 214 2022-10-09


Java实现动态日历效果

本文实例为大家分享了java实现动态日历效果的具体代码,供大家参考,具体内容如下

题目:动态日历

输入年份,月份,显示当前月份日历布局

分析

实现日历的基本思想为:确定一个基准日期,计算从基准日期到指定年份月份的前一个月的总天数,计算这个总天数的前提为判断指定年份是否是闰年(闰年是可以被400整除或者可以被4整除但不被100整除的年份),利用总天数除以7的余数可以确定当前月份前面的空格数,要想简单的使此余数为空格数,则基准日期必须为1月1日并且是星期一,大部分日历的基准日期为1900年1月1日,并且这一天是星期一,可以更简单实现动态日历。

步骤分析

1:判断指定年份是否是闰年

2:计算从1900年1月到目标年份月份的前一个月总天数

3:根据提供的月份获取当月总天数

4:获取打印当前月信息时要输出的空格数

5:打印日历

代码实现

Calendar类:

package com.softeem.j2106.oop2;

/**

* 动态日历:

* 输入年份,月份,显示当前月份日历布局

* @author xcc

* 2021/7/12

*/

public class Calendar {

/**

* 日历年份

*/

int year;

/**

* 日历月份

*/

int month;

/**

* 构造函数,创建日历对象时指定日历的年份和月份

* @param y

* @param m

*/

public Calendar(int y,int m){

year = y;

month = m;

}

/**

* 计算从1900年1月开始到当前日期的前一个月的总天数

* @return

*/

public int getTotalDaysFrom1900(){

int days = 0;

//统计整年的天数

for(int i = 1900;i < year;i++){

days += isLeapYear(i) ? 366 : 365;

}

//统计整月的天数

pXCaen for(int i = 1;i < month;i++){

days += getDaysOfMonth(i);

}

return days;

}

/**

* 根据提供的月份,获取当月的总天数

* @param m

* @return

*/

public int getDaysOfMonth(int m){

switch(m){

case 4:

case 6:

case 9:

case 11:

return 30;

case 2:

return isLeapYear(year) ? 29 : 28;

default:

return 31;

}

}

/**

* 返回参数年份是否是闰年

* @param year

* @return

*/

public boolean isLeapYear(int year){

return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;

}

/**

* 显示日历布局

*/

public void show(){

System.out.println("现在是:"+year+"年"+month+"月");

System.out.println("==SOFTEEM万年历【"+year+"】年【"+month+"】月==");

System.out.println("一\t二\t三\t四\t五\t六\t日");

System.out.println("===============================");

//获取日历前的空格数(当月的第一天是周几)

int space = getTotalDaysFrom1900() % 7;

//获取当月总天数

int days = getDaysOfMonth(month);

int count = 0;

//输出空格

for (int i = 0; i < space; i++) {

count++;

System.out.print("\t");

}

//输出日期

for(int i = 1;i <= days;i++){

System.out.print(i+"\t");

count++;

//如果计数器是7的倍数,说明已经打印一周,需要换行

if(count % 7 == 0){

System.out.println();

}

}

}

public static void main(String[] args) {

Calendar c = new Calendar(2021,8);

http:// c.show();

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:unity 2017 代码加密
下一篇:SQLMap入门(sqlmap使用方法)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~