Java之万年历
来源:互联网 发布:淘宝怎么发布视频直播 编辑:程序博客网 时间:2024/06/10 02:02
很多刚学Java的小伙伴都估摸回去实现万年历这个功能,至少怎么实现这个功能,这就需要了解万年历的平闰年的计算方法等。
万年历的实现主要是靠循环实现,程序基本上也都加了注解,而且尽可能的对程序进行了优化,大家有需要可以参考一下。
import java.util.Scanner;public class MyCalendar { /* * 功能:万年历 * 控制台:输入年份和月份,打印出该月的日历 * 实现步骤:判断平闰年 计算总天数 打印月的第一天星期几 打印空格 打印 * */ public static void main(String[] args) { MyCalendar calendar = new MyCalendar(); calendar.menu(); } //主菜单方法 public void menu(){ int year; //年 int month; //月份 int day; //天 int totalDays; //这个月第一天离1900-1-1过了多少天 int monthDays; //该月的总天数 Scanner in = new Scanner(System.in); System.out.println("********欢迎使用万年历**********"); System.out.println("请输入年份:"); year = in.nextInt(); System.out.println("请输入月份:"); month = in.nextInt(); System.out.println("你输入的是"+year+"年"+month+"月"); if(isRun(year)){ System.out.println(year+"年"+"是闰年!"); }else{ System.out.println(year+"年"+"是平年!"); } System.out.println("*****************************"); monthDays = getMonthDays(year, month); totalDays = getTotalDays(year, month); totalDays++; //总天数 day = totalDays%7; //得到星期几 System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t"); int iCount = 0;//计数器,用来决定是否换行 for (int i = 0; i < day; i++) { System.out.print("\t"); iCount++; } //打印该月日历 for (int i = 1; i <= monthDays; i++) { System.out.print(i+"\t"); iCount++; if(iCount%7==0){ System.out.println(); } } } //判断是否是闰年 public static boolean isRun(int year){ if((year%4==0 && year%100!=0) || (year%400==0)){ return true; }else{ return false; } } //根据年份和月份,返回该月的天数 public static int getMonthDays(int year,int month){ int days = 31; switch (month) { case 4: case 6: case 9: case 11: days = 30; break; case 2: if(isRun(year)){ days = 29; }else{ days = 28; } break; } return days; } //计算输入的年份和月份,计算这个月离1900-1-1过了多少天 public static int getTotalDays(int year,int month){ int totalDays = 0; //计算年的天数 for (int i = 1900; i < year; i++) { if(isRun(i)){ totalDays+=366; }else{ totalDays+=365; } } //计算月的天数 for (int i = 1; i < month; i++) { totalDays+=getMonthDays(year, i); } return totalDays; }}
不到位的地方也希望大家指正,谢谢!
0 0
- 【JAVA 课程设计 之 万年历】
- Java之万年历
- JAVA編程的逻辑思维之万年历
- 学习java的简单例子之万年历
- java笔记001之 迷你版万年历
- java万年历
- java 万年历
- Java万年历
- JAVA万年历
- java 万年历
- java万年历
- java万年历
- java万年历
- 【java】万年历
- java--万年历
- JAVA万年历
- java 万年历
- JAVA 万年历
- OC学习之UI笔记二
- Spring AOP拦截对Controller的请求时的配置失败
- 利用addr2line调试崩溃的bug
- fragment基础(一)
- Java文件操作①——XML文件的读取
- Java之万年历
- 在windows下 zookeeper 入门安装和测试
- CSU-1783: 聊天止于呵呵(字符串处理)
- DBA必知的mysql备份与还原
- epoll为什么比select和poll效率更高
- Less-13&14
- shiro与spring整合之DelegatingFilterProxy源码解析
- LintCode 45 最大子数组差
- 链表中倒数第K个节点