Java实例——判断某一年是否为闰年

技术关键:

满足两种条件的整数可以成为闰年:

1、非整百年份能被4整除;

2、整百年份能被400整除。

Java语法:

year % 4 == 0 && year % 100 != 0 || year % 400 == 0

实现过程:

 1 package test;
 2 import java.util.Scanner;
 3 public class LeapYear {
 4        public static void main(String[] args) {
 5              // TODO Auto-generated method stub
 6              Scanner scan = new Scanner(System.in);
 7              System.out.println("请输入一个年份:");
 8              long year = scan.nextLong();                                 //接收用户输入
 9              if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
10                     System.out.println(year + "是闰年!");
11              } else {
12                     System.out.println(year + "不是闰年");
13              }
14        }
15 }

后记:一开始不能理解为什么year % 100 != 0这个条件,毕竟整百年份除以100肯定等于0啊,百度了一下,看到这句话:

判定公历闰年遵循的规律为: 四年一闰,百年不闰,四百年再闰。

百年不闰!百年不闰!百年不闰!看到这个就明白过来了。

在该实例中有个扩展学习,判断指定日期间经过的天数

题:请尝试判断从2000年1月1日到2016年5月1日一共经历多少天。

书上没给答案,但我自己分析:有了前面实例判断某年是否为闰年在前,可以先判断2000~2016年平闰年,平年是365天,闰年是366天,用for循环相加即可。

实现过程:

 1 package test;
 2
 3 import java.text.ParseException;
 4 import java.text.SimpleDateFormat;
 5 import java.util.Calendar;
 6 import java.util.Date;
 7
 8 public class CountDays {
 9     public static int differentDays(Date date1,Date date2) {
10         // TODO Auto-generated method stub
11         Calendar cal1 = Calendar.getInstance();
12         cal1.setTime(date1);
13
14         Calendar cal2 = Calendar.getInstance();
15         cal2.setTime(date2);
16
17         int day1 = cal1.get(Calendar.DAY_OF_YEAR);
18         int day2 = cal2.get(Calendar.DAY_OF_YEAR);
19
20         int year1 = cal1.get(Calendar.YEAR);
21         int year2 = cal2.get(Calendar.YEAR);
22
23         int days = 0;
24         for (int i = year1; i < year2; i++) {
25             if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {    //闰年
26                 days += 366;
27             } else {                                             //平年
28                 days += 365;
29             }
30         }
31         return days + (day2 - day1);
32     }
33
34     /*
35      * 测试
36      */
37     public static void main(String[] args) {
38         String dateStr = "2000-1-1";
39         String dateStr2 = "2016-5-1";
40         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
41         try {
42             Date date1 = format.parse(dateStr);
43             Date date2 = format.parse(dateStr2);
44             System.out.println("2000年1月1日到2016年5月1日一共经历了:" + differentDays(date1,date2) + "天。");
45         } catch (ParseException e) {
46             e.printStackTrace();
47         }
48     }
49 }

运行结果如下图所示,一共经历了5965天。

我不放心,又用了最原始的方法,在纸上列出2010年至2016年5月1日的天数,相加后得到的结果确实是5965天。

原文地址:https://www.cnblogs.com/luckyliulin/p/8971876.html

时间: 2024-08-29 22:12:58

Java实例——判断某一年是否为闰年的相关文章

java 实例 判断输出的括号是否成对出现

输入: {}() ({()}) {}( [] 输出: true true false true 代码: import java.util.Scanner; import java.util.Stack; import java.util.HashMap; class Solution { public static void main(String[] args) { /* Create HashMap to match opening & closing brackets */ HashMap

Java - 35 Java 实例

Java 实例 本章节我们将为大家介绍 Java 常用的实例,通过实例学习我们可以更快的掌握 Java 的应用. Java 环境设置实例 Java 实例 – 如何编译一个Java 文件? Java 实例 – Java 如何运行一个编译过的类文件? Java 实例 - 如何执行指定class文件目录(classpath)? Java 实例 – 如何查看当前 Java 运行的版本? Java 字符串 Java 实例 – 字符串比较 Java 实例 - 查找字符串最后一次出现的位置 Java 实例 -

Protocol Buffer技术详解(Java实例)

Protocol Buffer技术详解(Java实例) 该篇Blog和上一篇(C++实例)基本相同,只是面向于我们团队中的Java工程师,毕竟我们项目的前端部分是基于Android开发的,而且我们研发团队中目前主要使用的开发语言就是C++.Java和Python,其中Python主要用于编写各种工具程序.然而为了保证该篇Blog的完整性和独立性,我仍然会将上一篇Blog中已经出现的内容再一次赘述,同时对于Java中特有的部分也会着重介绍.          一.生成目标语言代码.      下面

微信公众平台接入Java实例,结合BAE

关于注册公众账号这块不详细介绍 注册完成,审核认证完,就可以开始玩了 1.如何成为开发者? 需要填写接口配置信息,需要自己的服务器资源,一般自己没有服务器,所以可以采用云服务器,例如BAE,SAE,阿里云服务器.这里用BAE 2.打开百度开放云平台官网,注册,登陆,点击开发者服务管理 2.1.点击"创建工程" 填写工程相关信息,应用名称自定义,类型选择java-tomcat,域名唯一,代码管理工具选择svn     到这里,bae应用创建完了. 3.现在来实现TOKEN验证的代码部分

在Java中判断数组中包含某个元素的几种方式的比较

闲来无事,将java中判断数组中包含某个元素的几种方式的速度进行对比,直接上代码 talk is cheap, show you the code package test.contain.lishaojie; import java.util.Arrays;import java.util.HashSet;import java.util.Set; public class TestContain { /** * @param args */ public static void main(S

相似算法 ,Java实例9 - 汉明距离 Hamming Distance

Java实例9 - 汉明距离 Hamming Distance http://blog.csdn.net/kindterry/article/details/6581344 /**在信息理论中,两个等长字符串之间的汉明距离 * 是两个字符串对应位置上不同字符的个数, * 换句话说,汉明距离就是将一个字符串替换成另外一个字符串所需要替换的字符长度. *例如,1011101和1001001之间的汉明距离是2, *toned和roses之间的汉明距离是3. *汉明重量是字符串相对于同样长度的零字符串的

Java中判断字符串是否为数字的五种方法

推荐使用第二个方法,速度最快. 方法一:用JAVA自带的函数 Java代码   public static boolean isNumeric(String str){ for (int i = str.length();--i>=0;){ if (!Character.isDigit(str.charAt(i))){ return false; } } return true; } 方法二: Java代码   /* * 判断是否为整数 * @param str 传入的字符串 * @return

java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”

在javascript中有一个方法isDigit()使用来判断一个字符串是否都是数字,在java的字符串处理方法中没有这样的方法,觉得常常需要用到,于是上网搜了一下,整理出了两个用正则表达式匹配的判断方法,如下: // 判断一个字符串是否都为数字 public boolean isDigit(String strNum) { return strNum.matches("[0-9]{1,}"); } // 判断一个字符串是否都为数字 public boolean isDigit(Str

Java实例变量初始化

由一道面试题所想到的--Java实例变量初始化 时间:2015-10-07 16:08:38      阅读:23      评论:0      收藏:0      [点我收藏+] 该题目源自微信公众号(程序员的那些事)的推送:携程 Java 工程师的一道面向对象面试题 题目是这样的:求下面程序的输出: public class Base { private String baseName = "base"; public Base() { callName(); } public v