java实现万年历——超简单!
万年历
public class WanNianLi {public static void main(String[] args){//思路://1、构建Scanner扫描器类的对象Scanner input = new Scanner(System.in);//2、从控制台接收用户录入的年份、月份System.out.println("输入年");int year = input.nextInt();System.out.println("输入月");int month = input.nextInt();//3、获得1900年距离当前年份上一年的总天数int totalDays = getFromNowYearTo1900TotalDays(year);//4、获得当前年份所经过的天数int totalDaysThisYear = getNowYearPassedTotalDays(year,month);//5、求得给定月份第一天的星期数int week = (totalDays + totalDaysThisYear +1) % 7;//星期日是,week = 0//6、格式化输出日历formatCalendarOutput(week,year,month);}/***格式化输出日历*@param week:当前月份第一天的星期数*@param year:当前年份*@param month:当前月份*/public static void formatCalendarOutput(int week,int year,int month){int cnt = 0;//计数器,记录空白数和日期数的和//1) 打印表头System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");//2)打印空白(观察星期与之前空个数之间的规律)for(int i=1;i<= week;i++){System.out.print("\t\t");cnt++;}//3) 打印日历for(int i=1;i<=getNowMonthDays(year,month);i++){System.out.print(i+"\t\t");cnt++;//若记录空白数和日期数的和是七的倍数,应该换行输出if(cnt % 7 == 0){System.out.println();}} }/***判断给定的年份是否为闰年*@param year:给定的年份*@return true:闰年;false:平年*/public static boolean isLeapYear(int year){return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); }/***根据参数指定的年份,月份,求出当前月的总天数*@param year:年份*@param month:月份*@return 月的总天数*/public static int getNowMonthDays(int year,int month){//year:设计该参数的原因,2月份根据年份是否是闰年来确定其天数的switch(month){case 2:return isLeapYear(year) ? 29 : 28;case 4:case 6:case 9:case 11:return 30;default:return 31;}}/***获得当前年份的上一年距离1900年所经过的总天数*@param year 当前年份*@return 总天数*/public static int getFromNowYearTo1900TotalDays(int year){int totalDays = 0;for(int i = 1900; i< year; i++){//i:年份totalDays += isLeapYear(i) ? 366 : 365;}return totalDays;}/***求出当前年份经过的总天数(从当前年的1月1日到给定月份的上一个月最末一天)*@param year:年份*@param month:月份*@return 总天数*/public static int getNowYearPassedTotalDays(int year,int month){int totalDays = 0;for(int i=1;i< month;i++){//i:月份totalDays += getNowMonthDays(year,i);}return totalDays;}
}
转载希望标明出处,谢谢
java实现万年历——超简单!相关推荐
- 字符串正反连接java_字符串正反连接(Java实现,超简单)
解题思路:先用java.io包里面的BufferedReader类来对InputStreamReader类进行包装,实现快速输入字符串以节约时间,然后用完后将输入流关闭.输入完了以后调用java.la ...
- java反编译超简单教程
第一步:这里是代码编译完输出.class的路径,有自己想要反编译的程序可以跳过这一步 第二步:看好路径,将想要反编译的class文件,拖到src.....main...最后的项目文件夹中 完成:发 ...
- 超简单的配置java环境变量(绝对路径)
超简单的配置java环境变量(绝对路径) 之前一开始学习java的时候糊里糊涂配好了环境变量,也是费了好大的牛劲,配了卸卸了重新配.前几天学妹让我给她看看环境变量,瞬间觉得环境变量真的很好懂,只要你搞 ...
- java 简单万年历_java简单万年历
Java万年历源代码_幼儿读物_幼儿教育_教育专区.. import java.awt.*; import java.awt.event.*; import javax.swing.*; import ...
- SVN远程改密码的超简单的java实现
SVN远程改密码的超简单的java实现java源码下载地址 对于使用VisualSVNServer的免费使用者来说,为方便用户的使用,远程改密是十分必要滴.对于只会java开发的程序员来说,按照以下的 ...
- java打印输出万年历_Java基础之打印万年历的简单实现(案例)
Java基础之打印万年历的简单实现(案例) 问题:输入年,月,打印对应年月的日历. 示例: 问题分析: 1,首先1970年是Unix系统诞生的时间,1970年成为Unix的元年,1970年1月1号是星 ...
- java最美验证码_java超简单,超级实用验证码
java超简单,超级实用验证码 1. 验证码(2) dsnaValidateCode.jar dsnaValidateCode_src.rar ValidateCode.java 验证码生成类 J ...
- Java制作二级导航菜单_纯CSS实现超简单的二级下拉导航菜单代码
本文实例讲述了纯CSS实现超简单的二级下拉导航菜单代码.分享给大家供大家参考.具体如下: 这是一款纯CSS菜单,二级下拉导航效果,是最简洁的CSS导航菜单,兼容性也很棒,IE7/8.火狐等都支持,而且 ...
- java jsp网页计算器_使用JSP制作一个超简单的网页计算器的实例分享
实现一个简单的计算器程序,要求:使用jsp+javabean模式实现. 项目源代码如下: 文件:calculator.jsp 简单的计算机 进行计算 --%> cal.calculate(); ...
- 批处理 操作mysql_超简单使用批处理(batch)操作数据库
超简单使用批处理(batch)操作数据库 批处理(batch)是什么 批处理的执行就好比快递员的工作: 未使用批处理的时候,快递员一次从分发点将一件快递发给客户: 使用批处理,则是快递员将所有要派送的 ...
最新文章
- 技本功丨请带上纸笔刷着看:解读MySQL执行计划的type列和extra列
- 外包公司派遣到网易,上班地点网易大厦,转正后工资8k-10k,13薪,包三餐,值得去吗?...
- 【效率】程序员救星,又一 VS Code 插件神器面世!
- 设计模式——模版方法
- 第五章项目 体检套餐管理系统
- Windows Socket 编程_ 简单的服务器/客户端程序
- 由炮灰模型到“微软钻石题”
- python日历模块_Python日历模块| setfirstweekday()方法与示例
- python是什么?python该怎么学?一招告诉你!!
- 安装svn显示目标计算机积极拒绝_【SVN】Error running context: 由于目标计算机积极拒绝,无法连接...
- 【Elasticsearch】推荐一个同步Mysql数据到Elasticsearch的工具
- 通过案例学调优之--和 LOG BUFFER 相关的主要 Latch
- 092:QuerySet API详解-切片操作
- unity, 欧拉角(euler angle)
- spnc币吧_CCIEC币-目前是CPUsolo独自开采。CPU服务器独自开采钱包上挖新币教程!...
- License授权方案
- JAVA SE 13快速安装
- CSDN每日一练:蛇形矩阵
- JavaScript异步编程(1)- ECMAScript 6的Promise对象
- DDGDataCache OC文件缓存,代码简单,功能强大