基于Java基础知识实现动态日历的查询操作

it2022-05-05  76

利用Java基础知识实现简单的动态日历

简介

首先要清晰的知道每个月的前几天需要空几个格,而由此就需要知道每个月份的天数,因为二月份的天数受到平年闰年的影响,所以在此之前还需要设计一个判断语句来判断输入的年份是否时闰年。我们先找到一个参照日期,取1900年1月1号作为参照日期,此时刚好是周一,不需要空格。然后我们可以计算出输入的月份的前一个月份距离1900.1.1的总天数除以7所得的余数即我们在当月需要空出的空格数。主要运用的就是一些基本的判断语句和循环语句,用于控制每一行的空格数以及日期的平整性。

代码实现

package com.softeem.lesson05.example; /** * java基础语法 * 数据类型、条件分支、循环语句、运算符 * 面向对象 * 类、对象、属性、方法、封装 * 分析: * 1、计算从1900年1月份到目标年份月份的前一个月的总天数 * */ public class MyCalender { private int year; private int mouth; public MyCalender(int y,int m){ year=y; mouth =m; } //判断年份是否是闰年 public boolean isLeapYear(int y){ if(y@0==0 || (y%4==0&&y0!=0)){ return true; }else{ return false; } } //根据提供的月份获取当月的总天数 private int getDayOfMonth(int i){ switch(i){ case 1 : case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 2:return isLeapYear(year)?29:28; default: return 30; } } // 计算从1900年1月到目标年份月份前一个月的总天数 public int getTotalDaysFrom1900(){ int days = 0; for(int i=1900;i<year;i++){ days += isLeapYear(i) ? 366 : 365; } for(int i=1;i<mouth;i++){ days += getDayOfMonth(i); } return days; } //打印日历 public void print(){ //获取打印当前月信息时要输出的空格数 int spaces = getTotalDaysFrom1900()%7; //获取当前月份的总天数 int days = getDayOfMonth(mouth); System.out.println("============SOFTEEM万年历【"+year+"】年【"+mouth+"】月========="); System.out.println("一\t二\t三\t四\t五\t六\t日"); System.out.println("================================================="); int count =0; for(int i=0;i<spaces;i++){ System.out.print("\t"); count++; } //输出日期 for(int i=1;i<=days;i++){ if(count==6||count%7==0){ System.out.print("("+i+")"+"\t"); count++; }else{ System.out.print(i+"\t"); count++; } if(count%7==0){ System.out.println(); } } } } public class TextCalender { public static void main(String[] args) { MyCalender mc =new MyCalender (2019,7); int days = mc.getTotalDaysFrom1900(); System.out.println(days); mc.print(); } }

注意事项

需要注意的是闰年的判断语句有两条,能被4整除不能被100整除的与能被400整除的均是闰年。

空格处的循环次数一定要严格控制,还有就是的清晰每个换行处。


最新回复(0)