public void showTime(){
/*万年历 :  
1900年1月20号是星期几?
1月1号是星期一
1月8号是星期一
1月15号是星期一
1%7 = 1
8%7 = 1
15%7 = 1
★: 1. 用日期数去%7可以得到星期数 
1900年2月12号是星期几?
★: 2. 从1月1号 直到 2月12的总天数 % 7 得到星期数
★★★: 为什么要算星期几?因为在打印万年历的时候,需要知道一个月份的1号是星期几,才能正确打印之后的日期 
★★★:2015年8月1号是星期几?
1900-1-1到2015-8-1的总天数  % 7 */
int year=2017;
int month=11;
double all=0;
//从1900-1-1到year的前一年的总天数
all=getAllYearDay(year);
//从year的1月到month的前一个月的总天数
all+=getAllMonthDay(year,month);
System.out.println("总日子共有:"+all+"天");
//获得当前month的1号的对应总天数,因为这个总天数可以确定1号打印的位置(星期几)
//获得1号是星期几的数字,因为这个week数字确定1号前面的空格个数
int week=(int) (all%7);
//打印表头和1号之前的空格部分
for (int j = 0; j < week; j++) {
System.out.print(0+"\t");
}
//开始打印月历,但是你要获得该月到底要打印多少天
//开始循环打印,如果是星期天则换行
int dates=getMonthDay(year,month);
for (int i = 1; i < dates; i++) {
System.out.print(i+"\t ");
if((i+week)%7==0){
System.out.println();
}
}

}
//得到某月有多少天
int getMonthDay(int year,int month){
int dates=0;
for (int i = 1; i < month; i++) {
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12){
dates=31;
}else if( i==2 && (year % 4==0 && year % 100 != 0 ||year % 400 == 0) ){
dates=29;
}else if( i==2 && !(year % 4==0 && year % 100 != 0 ||year % 400 == 0) ){
dates=28;
}else{
dates=30;
}
}
return dates;
}
//从year的1月到month的前一个月的总天数
int getAllMonthDay(int year,int month){
int all=0;
for (int i = 1; i < month; i++) {
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12){
all+=31;
}else if( i==2 && (year % 4==0 && year % 100 != 0 ||year % 400 == 0) ){
all+=29;
}else if( i==2 && !(year % 4==0 && year % 100 != 0 ||year % 400 == 0) ){
all+=28;
}else{
all+=30;
}
}
return all;
}
//从1900-1-1到year的前一年的总天数
double getAllYearDay(int year){
double all=0;
for (int i = 1900; i < year; i++) {
if( i % 4==0 && i % 100 != 0 ||i % 400 == 0){
all+=366;
}else{
all+=365;
}
}
return all;

}

打印结果:

觉得有用的朋友希望可以帮忙“赞”一下哟(赠人玫瑰手有余香),谢谢^_^

万年历java的更多相关文章

  1. 万年历---java版

    程序难点 : 1. 每年每个月有多少天? 2. 每个月的1号是星期几? 3. 每年的2月份是多少天? 难点解析 : 1. 每年每个月除去1 3 5 7 8 10 12是31天以外, 其他月份(除去2月 ...

  2. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  3. 小JAVA大世界之万年历

    import java.util.Scanner; public class Calendar { public static void main(String[] args) { // 万年历 in ...

  4. 算法,java代码实现打印万年历

      万年历 以1900年1月1号星期一为时间原点 星期日 第一天 星期一 第二天 星期二 第三天 星期三 第四天 星期四 第五天 星期五 第六天 星期六 第七天            1.计算出当前日 ...

  5. Java流程控制练习--万年历

    Java流程控制练习--万年历 标签: Java入坑之旅 0x01. 打印倒三角和正三角 public static void main(String[] args) { // TODO Auto-g ...

  6. 用java进行简单的万年历编写

    import java.util.Scanner; public class PrintCalendarDemo1 { public static void main(String[] args) { ...

  7. java 实现万年历

    曾经初学java写万年历,都是採用主要的算法求出是否闰年闰月 计算公式例如以下 int year = 2014, month = 8, total = 0; if (month == 1 || mon ...

  8. java万年历

    import java.util.Scanner; public class perpetualCalendar { public static void main(String[] args) { ...

  9. java——万年历

    package oop; import java.util.Scanner; public class 万年历 { public static void main(String[] args) { / ...

随机推荐

  1. Tomcat服务器如何读取本地磁盘数据?

    实际问题: 如何让用户下载本地磁盘的资源文件呢?  在server.xml文件中配置虚拟路径如下(以下代码放在Host标签之中即可): 例如: 具体含义: 把本地磁盘目录 "D:\uploa ...

  2. Python自学笔记-面向对象编程(Mr seven)

    类的成员可以分为三大类:字段.方法和属性. 一.字段 字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同, 普通字段属于对象 静态字段属于类 二.方法 方法 ...

  3. Python实战之dict简单练习

    ['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__forma ...

  4. ZOJ3508 The War 贪心,最大流

    传送门:I Am Here 常规解法是贪心,但是在复习最大流的写法,因此用sap来写的.思路是很好想的 #include<cstdio> #include<cstdlib> # ...

  5. Jquery跨域读取城市天气预报信息

    最新项目中遇到一个问题,页面需要显示一些天气信息,但是部署网站的服务器没连接外网,只有客户端的电脑能连外网,于是想用js去实现这个功能. 刚开始找了一些方法,单独在浏览器中可以使用,但是在项目中运行的 ...

  6. JavaScriptOOP

    1. OOP基础 1.1面向对象编程OOP 1.语言的分类:      ① 面向机器:汇编语言      ② 面向过程:C语言      ③ 面向对象:C++ Java PHP 等   2.面向过程与 ...

  7. 为选择屏幕的字段设置F4帮助

    在没有参考 数据元素,域和搜索帮助的情况下,自定义F4 帮助 1,PARAMETERS: p_bukrs(4) TYPE C MATCHCODE OBJECT H_T001. 2,AT SELECTI ...

  8. 【框架学习与探究之AOP--Castle DynamicProxy】

    声明 本文欢迎转载,原始地址:http://www.cnblogs.com/DjlNet/p/7603654.html 前言 先说一点废话,在此之前博主也在早期就接触了或者看了些许AOP相关的文章,然 ...

  9. WPF popup置顶

    在程序写一个popup发现他会在置顶,在网上找了两大神代码http://www.cnblogs.com/Leaco/p/3164394.html http://blog.csdn.net/baijin ...

  10. mybatis逆向工程

    一.背景 在实际开发中我们会自己去写mapper映射文件,接口,数据库表对应的实体类,如果需求任务比较少,咱们还可以慢慢的一个一个去写,但是这是不现实的,因为在工作中我们的任务是很多的,这时mybat ...