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. 西门子行贿门情报列表,我自己写的一个小软件自动搜集到的。

    西门子行贿门消息列表 我自己写的一个小软件自动搜集到的. 其他类型情报也能自动收集. · 编号:1    西门子在华行贿案或涉及权力部门_中华财经    http://invest.8bio.com/ ...

  2. 熬夜写了一个小游戏,向SpaceX聊表敬意

    2019独角兽企业重金招聘Python工程师标准>>> 这是我长久放在桌面上的一张图片. 这张照片的名字叫做 Pale Blue Dot(暗淡蓝点),是旅行者1号在距地球64亿公里回 ...

  3. aspose 转pdf表格大小乱了_自己写了一个小工具类:pdf转word,没有页数和大小限制,保真!...

    昨天下午遇到一个问题,想把一个比较大的pdf转化为word,结果使用了各种工具都收费.想着干脆写一个小工具吧,一开始使用的python等等试了好几个网上的代码,结果全都失真.于是乎不得不花了一下午自己 ...

  4. 日历代码 谷歌无法显示当日_在Windows日历中显示您的Google日历

    日历代码 谷歌无法显示当日 Windows Vista includes a built-in calendar application that's pretty slick, but as an ...

  5. python登录网站下载excel_写了一个小工具,爬去指定网站的的登陆后的数据进行整理,可以正常登陆了,但是无法下载excel文件?...

    题目描述 我计划写一个小工具,爬取我账号里面的数据,采用requests登陆后,虽然可以正常登陆,但是无法下载里面Excel数据,麻烦大货帮我分析一下,怎么解决.我知道可能是权限问题,下载的时候需要带 ...

  6. 使用Bootstrap框架写的一个小实例

    今天学习了一下Bootstrap框架,,写一个小实例练练手,感受一下bootstrap兼容三端的强大. <!doctype html> <html lang="zh-CN& ...

  7. html病毒编写,用bat写的一个小病毒

    用了三天才看完=.=,感觉作者整理整理可以把博客当书买了... 然后自己突发其想,想到了一个小病毒程序,其实也算不上病毒,只能算是个恶作剧程序吧,其原理就是不断打开cmd程序,占用系统资源...呵呵. ...

  8. 使用python写的一个小系统

    最近在学习python写了一个学生管理系统,参考使用python创建学生管理系统_宇同学的博客-CSDN博客_python学生管理系统(感谢大牛的分享),不过小编对部分代码可读性进行了调整并新增了部分 ...

  9. 用Html+js自己写了一个小游戏

    刚接触HTML,感觉挺好玩儿的,自己做了一个小游戏,我要放上来,哈哈!! <!DOCTYPEHTML> <html><head><meta charset=& ...

最新文章

  1. OpenCV中使用模板匹配识别空闲的货架空间
  2. java操作跨页的word cell,利用itext 生成pdf,处理cell 跨页问题 [转]
  3. 富士通推出MB95200H/10H/20H系列用于家电的LPC微控制器
  4. 京瓷1020MFC显示J-05 11是什么意思_Gofair第11讲,细说谷歌系推广的产品优势和推广方式...
  5. python8_python8
  6. Markdown语法补充
  7. HTML边框百分比,CSS:以百分比和边框表示的宽度
  8. shell设计精髓_交互设计精髓
  9. linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(配置数据库监听_09)
  10. switch全部游戏列表_敢把游戏当教材,免费提供给学生!EA今年将推出7款NS作品!...
  11. 地球上出现过的CPU完全收藏.part4
  12. mysql基础知识理解和sql题讲解分析面试实战(四)之函数讲解和字符串的操作...
  13. 在idea中配置jetty
  14. jqgrid 单元格绑定点击事件_VBA代码解决方案第115讲:点击鼠标实现精准控制触发事件的VBA代码第二方案...
  15. 新课程背景下高中化学实验室的硬件建设要求
  16. adventureworks mysql_AdventureWorks2012
  17. java redis令牌桶_redis实现的简单令牌桶
  18. 用Python解读房贷利率,有没有套路?这是我见过最透彻的Python版解读!
  19. 第二期:关于十大数据相关问答汇总,关注持续更新中哦~
  20. 「拓数派(OpenPie)2022 发布会实录 」PieCloudDB Database 社区版与商业版产品总览

热门文章

  1. 在verilog中#的用法
  2. 2D物理系统——碰撞器
  3. 在Linux下搭建带MOD 我的世界(Minecraft)服务器
  4. 用c语言编写程序,求∑(k=1~100)k+∑(k=1~50)k2,c语言程序,求(100∑k=1 k)+(50∑k=1 k^2)+(10∑k=1 1/k) 这...
  5. HMAC和NMAC 生日攻击
  6. 高斯混合模型参数估计的EM算法
  7. springboot小程序商城毕业设计毕设作品开题报告开题答辩PPT
  8. 计算机网络——IP数据报分片
  9. 把绝对时间转换成当前时间
  10. 怿星科技参加2022(第六届)高工智能汽车年会