已知条件:1900年1月1日是星期一。闰年的特征:能被4整除且又能不能被100整除 ,或能被400整除。用Java设计一个万年历程序,效果如下:

程序的关键问题是怎样控制所输入的年月的第一天是星期几,第一天是星期一就不需要打印前面的空白,星期二就打印一个空白...

同时还需要在日期是星期天的时候换行。

而要知道某个日期是星期几只能根据1900.1.1日这个条件来判断,距离7天,14天,21,28.....N个7天后都是星期一,因此需要计算所选年月的1号是星期几来确定1号前面的空白距离以及月份中日期是不是星期天的计算。由此,需要计算所选年月与1900.1.1相距的天数,进一步拆分为年份的累计天数和月份的累计天数。

public static void main(String[] a){

int year=1900;

int month=1;

Scanner scanner=new Scanner(System.in);

System.out.println("请输入你要打印的万能历年份:");

year=scanner.nextInt();

System.out.println("请输入你要打印的万能历月份:");

month=scanner.nextInt();

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

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

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

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

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

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

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

System.out.println("\n");

int totalDay=0;

for(int i=1900;i

if((i%4==0 && i%100!=0) || i%400==0){ //闰年

totalDay+=366;

}else{

totalDay+=365;

}

}

//累加当年1月到输入月份1号的天数

for(int i=1;i

if(i==2){

if((year%4==0 && year%100!=0) || year%400==0){ //当前这一年是闰年

totalDay+=29;

}else{

totalDay+=28;

}

}else if(i==4 || i==6 || i==9 || i==11){

totalDay+=30; //4,6,9,11月固定30天,2月28或29天,其他月份固定31天

}else{

totalDay+=31;

}

}

int monthDays=0;//当前这个月的天数,用来控制打印多少个数字

if(month==2){

if((year%4==0 && year%100!=0) || year%400==0){ //当前这一年是闰年

monthDays=29;

}else{

monthDays=28;

}

}else if(month==4 || month==6 || month==9 || month==11){

monthDays=30;

}else{

monthDays=31;

}

//总天数与1900.1.1相距多少个7天都是星期一,1900.1.1是星期一,1900.1.8后也是星期一,距离7天,

int _1_xq= (totalDay)%7; //N个7天后都是星期一,余数为0表示星期一,由于我们是从星期一到星期天的顺序显示,是星期一就打印0个\t,星期二就打印1个\t,星期三就打印2个\t...n-1个\t

//控制月份的第一天的位置,余数为几就打印几个\t

for(int t=0;t<_1_xq>

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

}

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

int xq=((totalDay+i-1)%7);//相距多少天要减一,1.1到1.8

System.out.print(i);

if(xq==6){ //余数是六表示星期日,是星期日就换行

System.out.println("\n");

}else{

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

}

}

}

运行结果:

==================================================关注微信公众号 “Java技术”,可以实时获取有价值的技术文章推送。"Java技术"交流群:245130488

"Java软件工程师培训"系列课程正式推出,助你自学成才,进入IT行业。

http://www.chuanke.com/3377987-127068.html

java万能万年历的程序_Java万年历相关推荐

  1. java ee的小程序_Java EE调度程序

    java ee的小程序 Java EE应用程序服务器具有本机调度支持,并且在大多数应用程序中,不需要包括外部依赖项,例如著名的Quartz调度程序库. Java EE 6和7完整配置文件上提供的Jav ...

  2. java ee的小程序_Java EE应用程序的单片到微服务重构

    java ee的小程序 您是否曾经想过将现有的Java EE单体应用程序重构为基于微服务的应用程序需要做什么? 该博客说明了一个简单的购物车示例如何转换为基于微服务的应用程序,以及围绕它的一些担忧. ...

  3. java ee的小程序_Java EE 8 –为更多设备提供更多应用程序

    java ee的小程序 如果我不喜欢夏天的一件事,那就是事实是没有太多要分享或谈论的新闻. 谁决定将Java Day Tokyo置于今年的这个无聊的时间里,做得很好,并给了我一个写关于新的和即将到来的 ...

  4. java类和对象程序_Java类与对象程序设计基础

    Java类与对象程序设计基础 一.实验目的: 通过编制一个独立应用程序,使得学生掌握Java的系统所提供类的引用方法:通过编制一个完整的应用程序,使得学生对Java的应用程序的基本构成和基本算法熟练掌 ...

  5. java求梯形面积程序_Java初级应用,计算关于梯形跟圆形的面积。该程序中有3个类:Lader、Circle和主类Test。...

    编写一个Java应用程序,该程序中有3个类:Lader.Circle和主类Test.具体要求如下:Lader类具有类型为double的上底.下底.高.面积属性,具有返回面积的功能,包括斜体样式一个构造 ...

  6. java获取当前年月日历_java万年历,获取该年月日历表

    这篇文章主要介绍了java获取对应年月分日历表有需要的朋友可以来参考下 这篇文章应用java技术输入年份和月份获取该年月日历表,下面通过一段代码给大家做展示: 输入年份和月份,打印出这个月的日历表 1 ...

  7. java udp简单聊天程序_Java基于UDP协议实现简单的聊天室程序

    最近比较闲,一直在抽空回顾一些java方面的技术应用. 今天没什么事做,基于udp协议,写了一个非常简单的聊天室程序. 现在的工作,很少用到socket,也算是对java网络编程方面的一个简单回忆. ...

  8. 用java写秋道程序_Java开发者使用C++写程序踩的坑

    笔者是一个很矛盾的人.平时用Java.但是一开始学习的时候学的是汇编语言,而且对C语言也很熟悉.为什么不学C++呢?是因为我可以完全用Java的编码规范去写C++.因此我不需要了解更多的诸如C++的命 ...

  9. java c s聊天程序_Java建立C/S 模式聊天室服务器和客户端

    时间:2018-12-01 概述:聊天室 服务器 客户端 在网络上经常进各种聊天室,本例通过编程实现了C/S 模式的聊天室服务器和客户端.实现方法:ChatServer 类实现了一个聊天室服务器端, ...

  10. java随机安排座位表程序_java – 为长凳生成随机座位表的最有效算法?

    我正在为一位教师的家庭成员编写应用程序.她要求一个应用程序,允许她进入一群孩子,设定他们的惯用手,设置他们不能坐在旁边的人,指定每个工作台有多少个座位,然后为孩子们生成一个随机的布局,这样就没有了 – ...

最新文章

  1. date javascript 时区_js Date 时间戳 时区等问题总结
  2. python操作Elasticsearch7.17.0
  3. 【学习笔记】Python - Beautiful Soup
  4. JQuery对XML文件的操作
  5. Docker(十二)关于deployment 创建的小坑
  6. Java基础教程:JavaArrays工具类
  7. linux mail 使用外部邮箱地址发邮件
  8. 沙盘模拟软件_赛事动态 | 第十六届全国职业院校沙盘模拟经营大赛全国总决赛圆满举办...
  9. android闪存软件测试,谷歌商店上架一款软件:专门测试华为P10闪存,一秒出结果...
  10. 独热编码-通过python代码讲解
  11. 微信公众号开发中,获取用户资料的两种方式
  12. PS 学习笔记 18-加深工具组
  13. 【数字IC验证快速入门】3、数字IC设计全流程介绍
  14. 无人书店来了!驻守复旦大学14年的老书店,要做年轻人的打卡点
  15. 美国人发明电子计算机是哪一年,电子计算机是哪一年发明的_是谁发明的
  16. 从自定义string类型理解右值引用
  17. STM32模拟GPS输出PPS、GPRMC与VLP16时钟同步
  18. 行政区划矢量数据还不会找?那你一定没用过ArcGIS Pro的这个功能
  19. 洛谷 2341受欢迎的牛
  20. RoboMaster视觉教程(2)妙算(Nvidia Tegra K1)系统配置

热门文章

  1. 【LeetCode】题解合集(JavaScript版)
  2. 订票系统java源码_航空订票系统java源码
  3. Linux内核编程《一》
  4. npy文件的处理方式
  5. android图标分组名称唯美,手机屏幕分组好听名字
  6. 简单c语言程序例子与运行结果图,C语言程序第一次作业
  7. vi编辑文件时如何批量替换字符串
  8. 李宏毅机器学习hw1~4作业 强化点
  9. SQL Server根据地图坐标经纬度计算距离
  10. 200与mcgs485实例 smart_SMAART200与MCGS-工业支持中心-西门子中国