一.功能

根据用户输入的年份和月份,在控制台打印出对应月份的日历。

二.算法讲解

要打印一个月的日历只需要知道两件事。

1.这个月第一天是星期几

本例子中,使用蔡勒公式,判断某年某月的一号是周几,关于蔡勒公式不了解的同学可以百度一下,这里不作讲解。
使用"蔡勒公式"计算某月第一天是周几的好处有:
​(1).不用选择参考年月日;
(2)不用计算参考日到计算日的间隔天数;
(3)不用计算一年有多少天。

2.这个月有多少天

使用switch-case语句进行判断,大月31天,小月30天,2月闰年29天,平年28天。

三.源码

import java.util.Scanner;public class DateUtils {/* 判断是否为闰年 */public boolean isleap(int year) {return (year % 4 == 0) && (year % 100 != 0) || year % 400 == 0;}/* 判断这个月有多少天 */public int daysOfmonth(int year, int month) {switch (month) {/* 大月 */case 1:case 3:case 5:case 7:case 8:case 10:case 12:return 31;/* 小月 */case 4:case 6:case 9:case 11:return 30;/* 二月 */case 2:if (isleap(year))return 29;elsereturn 28;default:System.out.println("程序错误:输入的月份有误!");return 0;}}/*** 蔡勒公式,判断某年某月的一号是周几* * @param year  年* @param month 月* @return week(0,6)*/private int weekOffirst(int year, int month) {int m = month;int d = 1;if (month <= 2) { /* 对小于2的月份进行修正 */year--;m = month + 12;}int y = year % 100;int c = year / 100;// 世纪数减1int w = (y + y / 4 + c / 4 - 2 * c + (13 * (m + 1) / 5) + d - 1) % 7;if (w < 0) /* 修正计算结果是负数的情况 */w += 7;return w;}/* 打印日历 */public void dataprint(int year, int month) {System.out.println("\t\t" + year + "年" + " " + month + "月");System.out.println("日\t一\t二\t三\t四\t五\t六");int week = weekOffirst(year, month);int[][] data = new int[6][7];int daynum = 1;for (int i = 0; daynum <= daysOfmonth(year, month); i++) {for (int j = 0; j < 7 && daynum <= daysOfmonth(year, month); j++) {if (i == 0 && j < week) {data[i][j] = 0;System.out.print("\t");} else {data[i][j] = daynum++;System.out.print(data[i][j] + "\t");}}System.out.println();}}/* 主函数入口 */public static void main(String[] args) {DateUtils du = new DateUtils();Scanner scn = new Scanner(System.in);System.out.print("输入要打印的年:");int year = scn.nextInt();System.out.print("输入要打印的月:");int month = scn.nextInt();scn.close();du.dataprint(year, month);}
}

效果预览

Java打印年月日历相关推荐

  1. java 打印当月日历_74. Java打印当月日历

    自从Java 1.8 开始,提供了新的日期和时间处理对象,使用起来方便很多.对于新项目,推荐使用该API,为了兼容旧项目,原有的API仍然可以继续使用.下面就简单使用新的API打印当月的日历: pac ...

  2. java 打印当月日历_Java打印日历表

    今天来吐槽一下Java的Calendar类的使用问题,反正我是弄了半天. 首先是,遇到一个问题,输入年份和月份,需要打印这个月的日历,网上有不少代码,但我用了几个感觉都不是很靠谱. 然后经过一番探索, ...

  3. java 打印某年的日历_java打印指定年月的日历

    本文实例为大家分享了Java打印指定年月日历的具体代码,供大家参考,具体内容如下 日历如下: 程序如下: //打印指定年月的日历 public class PrintCalendar { public ...

  4. java输入年月输出日历_java 输入年月,获取日历表

    /* 做日历作业: 输入一个时间如: 2016-11 就显示2016年11月的日历显示 */ import java.util.*; class calendar { public static vo ...

  5. java 日历算法_Java实现 蓝桥杯VIP 算法提高 任意年月日历输出

    算法提高 任意年月日历输出 时间限制:1.0s 内存限制:512.0MB 已知2007年1月1日为星期一. 设计一函数按照下述格式打印2007年以后(含)某年某月的日历,2007年以前的拒绝打印. 为 ...

  6. Java打印任意一年的日历

    用Java循环知识打印一个日历 打印一年的年历:编写程序提示用户从键盘上输入一个年份(如2021)和该年第一天是星期几,星期用数字表示,0表示星期日,如图: 代码如下: 用ans变量存储个数,如果等于 ...

  7. java中的日历_Java中的日历功能

    java.util.calendar类提供Java中的日历功能.是一个抽象类,提供在特定时间点和一组日历字段(例如YEAR,MONTH,DAY_OF_MONTH,HOUR等)之间进行转换的方法,以及用 ...

  8. JAVA打印月历(以2017年为例)

    JAVA打印某月份月历(以2017年为例) 实验目标: 练习java基础表达式,实现月历正确打印. 实验分析: 考虑月份不同,所含日期数不同,需要设定每月日期,用switch语句控制. 要确定该年第一 ...

  9. java课程设计日历_java课程设计日历记事本赵锐.doc

    java课程设计日历记事本赵锐.doc 2本科生课程设计课程名称JAVA程序设计课程设计题目日历记事本学号201440930252学生姓名赵锐所在专业2014计算机学院所在班级信工2班成绩课程设计时间 ...

  10. 利用Java输出电子日历

    /** 时间:2018-3-25* 目的:practice* 内容:利用Java输出电子日历* 使用Java技术实现电子日历,需求为从控制台输入年份与月份后,控制台输出该月的日历信息.* */ pac ...

最新文章

  1. 利用数据存储技术实现数据安全合理备份
  2. PyTorch中MaxPool的ceil_mode属性
  3. 收集下关系数据库处理亿万级别的数据
  4. JS判断 浏览器 是否禁用Cookie
  5. 可以忽略的:BASH:/:这是一个目录
  6. Windows环境下安装redis以及出现的一些未解决的问题
  7. 西南交大计算机辅助制造a卷,计算机辅助制造 西南交大作业.doc
  8. MYSQL数据库常用语句
  9. webstorm开发微信小程序
  10. Python和C++交互
  11. 乔纳森 刘易斯 oracle,火箭或用新劳资协议追小加 特赦条款下签刘易斯
  12. WS小世界网络python快速实现——调用networkx包
  13. 把m个球放到n个盒子里,有多少种方法 球盒问题,8种情况
  14. ubuntu emacs ess R
  15. 2023年,“新一代”固定资产管理平台——支持低代码平台
  16. Java实现AD域登录认证
  17. 【AP】Robust multi-period portfolio selection(3)
  18. 计算机专业省赛一等奖有什么好处,竞赛省一等奖有什么用
  19. 财产保险的误区(一)
  20. 自己实现的printf函数

热门文章

  1. Window7 Chrome 升级提示关闭
  2. openGL增强表面细节----法线贴图
  3. ORACLE ERP consolidation流程(二)
  4. Oracle 监听器无法启动(TNS-12555,TNS-12560,TNS-00525)启动监听器无法打开,报错!
  5. java 实现 word 文档的在线编辑以及流转
  6. QNX 在车机系统中的应用
  7. 帝国网站mysql 数据库开发_帝国cms phpmyadmin数据库操作及密码修改
  8. oracle实现aes解密_AES加解密程序的实现
  9. R数据分析:如何在R中使用mutate
  10. 滴滴裁员2000人,员工竟然被裁出幸福感,获得员工的一致好评?