万年日历思路加完整代码
1、如何判断闰年 解决哪些年是365天,哪些年是366天
能被4整除且不能被100整除 或者 可以被400整除
编写方法给定年份,返回该年共有多少天
/*** * @param year 传入的年份* @return 返回的是传入年份有多少天*/
public static int YearDays(int year)
2、判定2月是28天还是29天,哪些月是30天,那些月是31天
由于28天和29天情况 ,一定得知道要判定的是哪一年
30天 4 6 9 11
31天 1 3 5 7 8 10 12
28 2 月平年
29 2月闰年
/*** * @param year 传入的年份* @return 判断传入的年份是否是闰年,true表示是闰年,false表示为平年*/
public static boolean isLeapYear(int year)/*** * @param month 月份* @param year 年份* @return 当年的月份有多少天*/public static int MonthDays(int month,int year)
**3、判定每个1号是周几
1900开始计时
1900年1月1号就是星期一
1月是31天 31 % 7 = 3 余数 + 1 就是2月1号周几 2月1号周4
假如要计算3月1号
1月31天 2月28天 (31+28) % 7 = 3 周四
加入要计算4月1号
(31+28+31) % 7 = 6 余数 + 1 = 7
加入要计算1903年 3月1号是周几
(1900年天数 + 1901年的天数 + 1902年的天数 + 1903年中 1月,2月的天数) % 7
(365+365+365+31+28) % 7 = 1154 % 7 = 6 周日**public static int WeekDays(int month,int year)
4、打印日历
输入一个年份 ,打印全年的日历
/*** * @param year 输入的年份*/
public static void printcalender(int year)
JAVA完整代码展示:
package calendar1;import java.util.Scanner;public class test1 {public static void main(String[] args) {// TODO Auto-generated method stubScanner read=new Scanner(System.in);System.out.println("请输入年份:");int year=read.nextInt();int days=YearDays(year);System.out.println(year+"年有"+days+"天!");System.out.println("请输入月份:");int month=read.nextInt();int days2=MonthDays(month, year);System.out.println(year+"年"+month+"月有"+days2+"天!");System.out.println(year+"年"+month+"月1日是周"+(WeekDays(month, year)+1));printcalender(year);}/*** * @param year 传入的年份* @return 返回的是传入年份有多少天*/public static int YearDays(int year){int days=0;return days=isLeapYear(year)?366:365;}/*** * @param year 传入的年份* @return 判断传入的年份是否是闰年,true表示是闰年,false表示为平年*/public static boolean isLeapYear(int year){boolean flag=false;if(((year%100==0)&&(year%400==0))||((year%100!=0)&&(year%4==0))){flag=true;}else{return flag=false;}return flag;}/*** * @param month 月份* @param year 年份* @return 当年的月份有多少天*/public static int MonthDays(int month,int year){int days=0;if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){days=31;}else if(month==4||month==6||month==9||month==11){days=30;}else if(month==2&&isLeapYear(year)){days=29;}else if(month==2&&!isLeapYear(year)){days=28;}return days;}public static int WeekDays(int month,int year){int days=0;/*** 先计算年份的天数*/for (int i = 1990; i <year; i++) {days+=YearDays(year);}/*** 然后计算月份的天数*/for (int i = 1; i < month; i++) {days+=MonthDays(i, year);}return days%7;}/*** * @param year 输入的年份*/public static void printcalender(int year){for (int i = 1; i <= 12; i++) {System.out.println("\t\t\t"+i+"月");System.out.println();System.out.println("日\t"+"一\t"+"二\t"+"三\t"+"四\t"+"五\t"+"六\t");for (int j = 0; j <=WeekDays(i, year); j++) {System.out.print("\t");}for (int t =1; t <= MonthDays(i, year); t++) {if ((t+WeekDays(i, year))%7==0) {System.out.println();}System.out.print(t+"\t");}System.out.println();System.out.println();}}
}
运行的效果:
*请输入年份:
2019
2019年有365天!
请输入月份:
2
2019年2月有28天!
2019年2月1日是周5
1月
日 一 二 三 四 五 六
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
2月
日 一 二 三 四 五 六
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
3月
日 一 二 三 四 五 六
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
4月
日 一 二 三 四 五 六
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
5月
日 一 二 三 四 五 六
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
6月
日 一 二 三 四 五 六
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
7月
日 一 二 三 四 五 六
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
8月
日 一 二 三 四 五 六
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
9月
日 一 二 三 四 五 六
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
10月
日 一 二 三 四 五 六
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
11月
日 一 二 三 四 五 六
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
12月
日 一 二 三 四 五 六
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*
万年日历思路加完整代码相关推荐
- 黑马旅游网项目详细思路和完整代码整理 -附源码
黑马旅游网项目详细思路和完整代码整理 前言 由于新冠病毒的原因,无法上学.百无聊赖下自己开始看视频学习,跟着视频做完了这个项目来检验学习成果,顺便写篇博客来记录一下. 话不多说,开始正题. 文档及其源 ...
- 2022华数杯B题论文思路分析+完整代码(水下机器人组装计划)(一二问答案接出来和标准答案一样)(问题三四逼近正确答案)(完整论文,代码可直接跑)
写在前面:学校最近搞数学建模竞赛培训,以2022华数杯B题作为训练题目,在查资料过程中发现网上没有哪一篇论文解出了正确答案,而我们组利用Lingo软件准确的解出了正确答案,但是在第三问时,由于决策的变 ...
- 【2023年电工杯数学建模竞赛B题人工智能对大学生学习影响的评价】完整思路分析+完整代码
1.问题背景与描述 这道题整体还是相对简单的,比较适合新手,选的人多对应获奖数量也会多,所以不要纠结于选题,就选你看上去能做的就好 2.问题分析 2.1 问题一的分析 对附件2中所给数据进行分析和数值 ...
- 2022华数杯B题论文思路分析+完整代码(水下机器人组装计划)
大家可以看看官方的解析视频(这个视频只要是参赛选手就可以免费观看,不能看的朋友我考虑过几天出一个博客),此外,官方的标准答案我已经放在此篇博客的末尾了,大家自行参考. 2022华数杯B题官方解析视频& ...
- Java 写的万能日历-窗体程序 完整代码
开发环境 开发语言为Java,开发环境Eclipse或者IDEA都可以.数据库采用:MySQL.运行主程序,或者执行打开JAR文件即可以运行本程序. 系统框架 利用JDK自带的SWING框架开发,不需 ...
- 【数据结构与算法】高级排序(希尔排序、归并排序、快速排序)完整思路,并用代码封装排序函数
本系列文章[数据结构与算法]所有完整代码已上传 github,想要完整代码的小伙伴可以直接去那获取,可以的话欢迎点个Star哦~下面放上跳转链接 https://github.com/Lpyexplo ...
- 【深度学习】(2) 数据加载,前向传播2,附python完整代码
生成数据集: tf.data.Dataset.from_tensor_slices(tensor变量) 创建一个数据集,其元素是给定张量的切片 生成迭代器: next(iter()) next() 返 ...
- 加载svr模型_机器学习XGBoost实战,网格搜索自动调参,对比随机森林,线性回归,SVR【完整代码(含注释)+数据集见原文链接】...
建议:阅读2020.8.7的文章,完全了解GDBT和XGBT的原理. 机器学习- XGBoost,GDBT[过程:决策树,集成学习,随机森林,GDBT,XGBT,LightGBM] 本次实践内容: 数 ...
- Visual Studio Code (echarts)数据可视化瀑布图实现及标题的格式设置标题背景颜色以及设置副标题和标题加边框,设置边框背景和边框颜色柱形图颜色及柱形图的宽度设置完整代码
设置标题背景颜色以及设置副标题和标题加边框, 设置边框背景和边框颜色 柱形图颜色及柱形图的宽度设置完整代码 <!DOCTYPE html> <html lang="en&q ...
最新文章
- squid缓存服务器
- 2016年,C语言该怎样写
- 备份表到存在的表或者自动新建表
- 网页交互动画终极指南
- Blazor WebAssembly 3.2.0 已在塔架就位 将发射新一代前端SPA框架
- 使用DB2的with as 语句 实现树的递归查询
- DevExpress控件介绍
- 云时代,运维工程师如何成长?
- php html小项目,使用PHP把HTML生成PDF文件的几个开源项目介绍
- 【读书笔记】企业IT架构转型之道 阿里巴巴中台战略思想和架构实战
- mysql两张大表关联查询_关于mysql当中给数据量特别大的两个表做关联查询的时候解决查询速度很慢的解决方法...
- Windows10 + Anaconda(python3.6)安装labelling
- HHL论文第三弹(参数讨论)
- 围观了字节跳动张一鸣近 10 年的微博,有人整理了这 231 条干货关键词:延迟满足感,自控,理性,反省,创新,学习。...
- 一致性检验Kappa 与 混淆矩阵
- 将m3u8格式转化为想要的格式
- html给页面整体添加左右边距_左右边距相对于页面宽度过大
- 放开二妻你会拼命一点儿工作么|独秀日记
- C语言---sprintf组包、sscanf解包
- 【转】旅游推荐系统的演进