昨天写了一个小日历,日历显示一年的日历,暂时设定位2017年,分三个种代码...
java用eclipse写的,先记住几个快捷键,"alt+/"调出整个函数,Ctrl+1 修改错误,Ctrl+shift+F 规范代码,让代码看起来更好看
首先位java的结构图
然后是第一种代码(第一种完全在主函数中编写):
1 package com.cal; 2 public class MyCalendar01 { 3 public static void main(String[] args) { 4 int year = 2017; 5 //显示某一年的日历 6 System.out.println(year + "年的日历"); 7 for (int i = 1; i < 13; i++) { 8 int month = i; 9 //显示某一月的开头 10 System.out.println(year + "年" + month + "月的日历"); 11 System.out.println("日\t一\t二\t三\t四\t五\t六"); 12 13 int monthDays = 0; 14 //判断此月有多少天 15 switch (month) { 16 case 1: 17 case 3: 18 case 5: 19 case 7: 20 case 8: 21 case 10: 22 case 12: 23 monthDays = 31; 24 break; 25 case 4: 26 case 6: 27 case 9: 28 case 11: 29 monthDays = 30; 30 break; 31 case 2: 32 //判断是否为闰年 33 if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { 34 monthDays = 29; 35 } else { 36 monthDays = 28; 37 } 38 break; 39 default: 40 break; 41 } 42 //计算每月为星期几,weekday是某月星期几 43 int weekDay = 0; 44 //计算1900年到该年之间一共有多少天 45 int days = 0; 46 for (int j = 1900; j < year; j++) { 47 int currentYear = j; 48 if (currentYear % 4 == 0 && currentYear % 100 != 0 49 || currentYear % 400 == 0) { 50 days = days + 366; 51 } else { 52 days = days + 365; 53 } 54 } 55 //算出该年某月之前有多少天 56 for (int j = 1; j < month; j++) { 57 int currentmonth = j; 58 switch (currentmonth) { 59 case 1: 60 case 3: 61 case 5: 62 case 7: 63 case 8: 64 case 10: 65 case 12: 66 days = days + 31; 67 break; 68 case 4: 69 case 6: 70 case 9: 71 case 11: 72 days = days + 30; 73 break; 74 case 2: 75 if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { 76 days = days + 29; 77 } else { 78 days = days + 28; 79 } 80 break; 81 default: 82 break; 83 } 84 } 85 weekDay = (days % 7 + 1) % 7; 86 //显示某月主题部分 87 for (int j = 0; j < weekDay; j++) { 88 System.out.print("\t"); 89 } 90 for (int j = 1; j < monthDays + 1; j++) { 91 int day = j; 92 System.out.print(day + "\t"); 93 if ((day + weekDay) % 7 == 0) { 94 System.out.println(); 95 } 96 } 97 System.out.println(); 98 99 } 100 } 101 }
第二种代码将某些功能写成一块一块的函数:
package com.Calendar;public class MyCalendar {public static void main(String[] args) {int year = 2017;// System.out.println();//printCalendarofMonth(year, 2); printCalendar(year);}// 显示每个月的开头static void printHeader(int year, int month) {System.out.println(year + "年" + month + "月");System.out.println("日\t一\t二\t三\t四\t五\t六");}// 某年某月是否为闰月static boolean isYear(int year) {boolean result;if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {result = true;} else {result = false;}return result;}// 获得某年的天数static int getDayofYear(int year) {int days = 0;if (isYear(year) == true) {days = 366;} else {days = 365;}return days;}// 获得某年某月的天数static int getDaysofMonth(int year, int month) {int days = 0;switch (month) {case 1:case 3:case 7:case 8:case 10:case 12:case 5:days = 31;break;case 4:case 6:case 9:case 11:days = 30;break;case 2:if (isYear(year) == true) {days = 29;} else {days = 28;}break;default:days = 0;break;}return days;}// 获得某年某月的1号是星期几static int getWeekDayofMonth(int year, int month) {int days = 0;int weekday;// 累计每年天数for (int i = 1900; i < year; i++) {int currentyear = i;if (isYear(currentyear) == true) {days += 366;} else {days += 365;}}// 累计该年前几月的天数for (int j = 1; j < month; j++) {int currentmonth = j;days += getDaysofMonth(year, currentmonth);}weekday = (days % 7 + 1) % 7;return weekday;}// 显示某月的日历主题部分static void printCalendarofMonth(int year, int month) {int days = 0;printHeader(year, month);int weekday = getWeekDayofMonth(year, month);for (int i = 0; i < weekday; i++) {System.out.print("\t");}days = getDaysofMonth(year, month);for (int i = 0; i < days; i++) {int day = i + 1;System.out.print(day + "\t");if ((weekday + day) % 7 == 0) {System.out.println();}}System.out.println();}//显示某年日历static void printCalendar(int year){for (int i = 1; i <13; i++) {int month=i;printCalendarofMonth(year, month);}}}
第三种为偷懒的办法,从主函数开始写分支函数,然后用ctl+1来建立分支函数,可以更快点:
package com.cal;public class MyCalendar {public static void main(String[] args) {int year = 2017;//System.out.println(getDays(year,2));//打印某一年的日历 printYearCalendar(year);}private static void printYearCalendar(int year) {System.out.println(year + "年的日历");for (int i = 0; i < 12; i++) {int month = i + 1;System.out.println(year + "年" + month + "月");System.out.println("日\t一\t二\t三\t四\t五\t六");printMonthofHeader(year, month);}}private static void printMonthofHeader(int year, int month) {// 某月的开始为星期几int weekday = getFirstDayofMonth(year, month);for (int i = 0; i < weekday; i++) {System.out.print("\t");}//根据年份和月份得到某个月共有几天int days = getDays(year, month);for (int i = 0; i < days; i++) {int day = i + 1;System.out.print(day + "\t");if ((weekday + day) % 7 == 0) {System.out.println();}}System.out.println();}//获得某年某个月的1号是星期几private static int getFirstDayofMonth(int year, int month) {int weekday;int days=0;// 计算从1900年1月1日以来的整年天数for (int i = 1900; i <year; i++) {int currentyear=i;days+=getDaysofYear(currentyear); }// 计算当前年份当前月份之前整月的天数for (int i = 1; i < month; i++) {int currentmonth=i;days+=getDays(year, currentmonth);}// 根据总天数计算这一天是星期几weekday=(days%7+1)%7;return weekday;}//获得某年的天数private static int getDaysofYear(int year) {if(isLeapYear(year)==true){return 366;}else{return 365;}}//根据年份和月份得到某个月共有几天private static int getDays(int year, int month) {int days = 0;switch (month) {case 1:case 3:case 5:case 7:case 8:case 10:case 12:days = 31;break;case 4:case 6:case 9:case 11:days=30;break;case 2:if(isLeapYear(year)==true){days=29;}else{days=28;}break;default:days = 0;break;}return days;}//判断某个年份是否为闰年private static boolean isLeapYear(int year) {boolean result;if(year%4==0&&year%100!=0||year%400==0){result= true;}else{result= false;}return result;} }
转载于:https://www.cnblogs.com/liu0799/p/6430739.html
昨天写了一个小日历,日历显示一年的日历,暂时设定位2017年,分三个种代码...相关推荐
- 西门子行贿门情报列表,我自己写的一个小软件自动搜集到的。
西门子行贿门消息列表 我自己写的一个小软件自动搜集到的. 其他类型情报也能自动收集. · 编号:1 西门子在华行贿案或涉及权力部门_中华财经 http://invest.8bio.com/ ...
- 熬夜写了一个小游戏,向SpaceX聊表敬意
2019独角兽企业重金招聘Python工程师标准>>> 这是我长久放在桌面上的一张图片. 这张照片的名字叫做 Pale Blue Dot(暗淡蓝点),是旅行者1号在距地球64亿公里回 ...
- aspose 转pdf表格大小乱了_自己写了一个小工具类:pdf转word,没有页数和大小限制,保真!...
昨天下午遇到一个问题,想把一个比较大的pdf转化为word,结果使用了各种工具都收费.想着干脆写一个小工具吧,一开始使用的python等等试了好几个网上的代码,结果全都失真.于是乎不得不花了一下午自己 ...
- 日历代码 谷歌无法显示当日_在Windows日历中显示您的Google日历
日历代码 谷歌无法显示当日 Windows Vista includes a built-in calendar application that's pretty slick, but as an ...
- python登录网站下载excel_写了一个小工具,爬去指定网站的的登陆后的数据进行整理,可以正常登陆了,但是无法下载excel文件?...
题目描述 我计划写一个小工具,爬取我账号里面的数据,采用requests登陆后,虽然可以正常登陆,但是无法下载里面Excel数据,麻烦大货帮我分析一下,怎么解决.我知道可能是权限问题,下载的时候需要带 ...
- 使用Bootstrap框架写的一个小实例
今天学习了一下Bootstrap框架,,写一个小实例练练手,感受一下bootstrap兼容三端的强大. <!doctype html> <html lang="zh-CN& ...
- html病毒编写,用bat写的一个小病毒
用了三天才看完=.=,感觉作者整理整理可以把博客当书买了... 然后自己突发其想,想到了一个小病毒程序,其实也算不上病毒,只能算是个恶作剧程序吧,其原理就是不断打开cmd程序,占用系统资源...呵呵. ...
- 使用python写的一个小系统
最近在学习python写了一个学生管理系统,参考使用python创建学生管理系统_宇同学的博客-CSDN博客_python学生管理系统(感谢大牛的分享),不过小编对部分代码可读性进行了调整并新增了部分 ...
- 用Html+js自己写了一个小游戏
刚接触HTML,感觉挺好玩儿的,自己做了一个小游戏,我要放上来,哈哈!! <!DOCTYPEHTML> <html><head><meta charset=& ...
最新文章
- OpenCV中使用模板匹配识别空闲的货架空间
- java操作跨页的word cell,利用itext 生成pdf,处理cell 跨页问题 [转]
- 富士通推出MB95200H/10H/20H系列用于家电的LPC微控制器
- 京瓷1020MFC显示J-05 11是什么意思_Gofair第11讲,细说谷歌系推广的产品优势和推广方式...
- python8_python8
- Markdown语法补充
- HTML边框百分比,CSS:以百分比和边框表示的宽度
- shell设计精髓_交互设计精髓
- linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(配置数据库监听_09)
- switch全部游戏列表_敢把游戏当教材,免费提供给学生!EA今年将推出7款NS作品!...
- 地球上出现过的CPU完全收藏.part4
- mysql基础知识理解和sql题讲解分析面试实战(四)之函数讲解和字符串的操作...
- 在idea中配置jetty
- jqgrid 单元格绑定点击事件_VBA代码解决方案第115讲:点击鼠标实现精准控制触发事件的VBA代码第二方案...
- 新课程背景下高中化学实验室的硬件建设要求
- adventureworks mysql_AdventureWorks2012
- java redis令牌桶_redis实现的简单令牌桶
- 用Python解读房贷利率,有没有套路?这是我见过最透彻的Python版解读!
- 第二期:关于十大数据相关问答汇总,关注持续更新中哦~
- 「拓数派(OpenPie)2022 发布会实录 」PieCloudDB Database 社区版与商业版产品总览
热门文章
- 在verilog中#的用法
- 2D物理系统——碰撞器
- 在Linux下搭建带MOD 我的世界(Minecraft)服务器
- 用c语言编写程序,求∑(k=1~100)k+∑(k=1~50)k2,c语言程序,求(100∑k=1 k)+(50∑k=1 k^2)+(10∑k=1 1/k) 这...
- HMAC和NMAC 生日攻击
- 高斯混合模型参数估计的EM算法
- springboot小程序商城毕业设计毕设作品开题报告开题答辩PPT
- 计算机网络——IP数据报分片
- 把绝对时间转换成当前时间
- 怿星科技参加2022(第六届)高工智能汽车年会