• 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天。

  • 相关阅读:
    利用栈实现字符串中三种括号的匹配问题c++语言实现
    十进制数转N进制c++实现
    字符单链表识别数字,字母,其它字符,并分为三个循环链表的算法c++实现
    c++两数组合并算法
    c++顺序表(数组)查找最大最小值
    SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析
    php实现单点登录,顶级域名与子域名间共享Cookie实现单点登录原理
    php实现单点登录实例
    php实现SSO单点登录实例
    玩转音频、视频的利器:FFmpeg
  • 原文地址:https://www.cnblogs.com/luckyliulin/p/8971876.html
Copyright © 2020-2023  润新知