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. 前端基础之JavaScript

    什么是JavaScript? JavaScript,也称ECMAScript,是一种基于对象和事件驱动并具有相对安全性并广泛用于客户端网页开发的脚本语言,同时也是一种广泛用于客户端Web开发的脚本语言 ...

  2. Web API 路由 [一] Convention-Based Routing

    Routing by Naming Convention 在App_Start/ WebApiConfig.cs文件中 routes.MapHttpRoute( name: "API Def ...

  3. Weave Scope 容器地图 - 每天5分钟玩转 Docker 容器技术(80)

    Weave Scope 的最大特点是会自动生成一张 Docker 容器地图,让我们能够直观地理解.监控和控制容器.千言万语不及一张图,先感受一下. 下面开始实践 Weave Scope. 安装 执行如 ...

  4. 使用Travis CI自动部署Hexo到GitHub

    原文链接(转载请注明出处):使用Travis CI自动部署Hexo到GitHub 前言 使用 hexo + gitPages 搭建个人博客的人都知道,每当要发表一篇博文,第一步得手动使用 hexo g ...

  5. c#中list使用示例

    protected void Page_Load(object sender, EventArgs e) { List<string> studentNames = new List< ...

  6. js系列教程2-对象、构造函数、对象属性全解

    全栈工程师开发手册 (作者:栾鹏) 快捷链接: js系列教程1-数组操作全解 js系列教程2-对象和属性全解 js系列教程3-字符串和正则全解 js系列教程4-函数与参数全解 js系列教程5-容器和算 ...

  7. thinkphp5.0解决控制器驼峰命名时提示找不到类名

    今天碰到了一个比较坑爹的问题,我的控制器的名字是用驼峰命名的,但是却给我报错,如下: 怎么解决呢? 看我的视图,同样是驼峰命名,此时只要将其改为auth_group这样的方式就可以了. 注意:url地 ...

  8. iOS10适配相关

    2016年9月7日,苹果发布iOS 10.2016年9月14日,全新的操作系统iOS 10将正式上线. 作为开发者,如何适配iOS10呢? 1.Notification(通知) 自从Notificat ...

  9. 【学习】文本框输入监听事件oninput

    真实项目中遇到的,需求是:一个文本框,一个按钮,当文本框输入内容时,按钮可用,当删除内容时,按钮不可用. 刚开始用的focus和blur, $(".pay-text").focus ...

  10. win10 uwp 关联文件

    有时候应用需要打开后缀名为x的文件,那么如何从文件打开应用? 首先,需要打开 Package.appxmanifest 添加一个功能,需要添加最少有名称,文件类型. 上面的图就是我添加jpg 的方法, ...