世纪年:能整除 100 的年份

普通年:不能整除 100 的年份

闰年:一年有 366 天,二月有 29 天

平年:一年有 365 天,二月有 28 天

对于世纪年:能整除 400 为闰年,否则为平年

对于普通年:能整除 4 为闰年,否则为平年

以下是代码实现:

1、普通两层 if 嵌套语句:

最为接近伪代码的逻辑,简单易懂

 if (year % 100 == 0) {
if (year % 400 == 0) {
System.out.println("世纪年 闰年");
} else {
System.out.println("世纪年 平年");
}
} else{
if (year % 4 == 0) {
System.out.println("普通年 闰年");
} else {
System.out.println("普通年 平年");
}
}

2、IDEA 提示修改后的 if 嵌套 以及 if ... else ... if 语句:

少用了一层嵌套,在不必要嵌套的地方去除嵌套,采用 else ... if 多分支语句

 if (year % 100 == 0) {
if (year % 400 == 0) {
System.out.println("世纪年 闰年");
} else {
System.out.println("世纪年 平年");
}
} else if (year % 4 == 0) {
System.out.println("普通年 闰年");
} else {
System.out.println("普通年 平年");
}

3、使用三目判断运算符精简代码量后的语句:

单条版

 System.out.println(year % 100 == 0 ? (year % 400 == 0 ? "世纪年 闰年" : "世纪年 平年") : (year % 4 == 0 ? "世纪年 闰年" : "世纪年 平年"));

缩进版

 System.out.println(
year % 100 == 0 ?
(year % 400 == 0 ? "世纪年 闰年" : "世纪年 平年") :
(year % 4 == 0 ? "世纪年 闰年" : "世纪年 平年")
);

注明:内语句的  () 不必要,是为了方便理解而加上的

180415_判断闰年的思路及三种 java 实现的更多相关文章

  1. 三种java 去掉字符串中的重复字符函数

    三种java 去掉字符串中的重复字符函数 public static void main(string[] args) { system.out.println(removerepeatedchar( ...

  2. Python判断文件是否存在的三种方法

    通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块.Try ...

  3. Python判断文件是否存在的三种方法【转】

    转:http://www.cnblogs.com/jhao/p/7243043.html 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先 ...

  4. Python 判断文件是否存在的三种方法

    通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块.Try ...

  5. js如何判断一个对象是不是Array? 三种方法总有一种可以帮上忙

    转载:http://www.nowamagic.net/librarys/veda/detail/1250 在开发中,我们经常需要判断某个对象是否为数组类型,在Js中检测对象类型的常见方法都有哪些呢? ...

  6. 详解三种java实现多线程的方式

    java中实现多线程的方法有两种:继承Thread类和实现runnable接口. 1.继承Thread类,重写父类run()方法 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  7. iOS 判断当前网络状态的三种方法

    http://www.cocoachina.com/ios/20171103/21039.html 在项目中,为了好的用户体验,有些场景必须线判断网络状态,然后才能决定改干嘛.比如视频播放,需要线判断 ...

  8. JQery判断checkbox是否被选三种方式

    方法一:if ($("#checkbox-id").get(0).checked) {    // do something} 方法二:if($('#checkbox-id').i ...

  9. msyql判断记录是否存在的三种方法

    1. select count(*) from .... 这种方法最常见但是效率比较低,因为它需要扫描所有满足条件的记录 2. select 1 from xxxtable where .... 这种 ...

随机推荐

  1. Liunx-history命令

    1. 查看历史命令执行记录 2. 查看命令cd 的历史执行记录 3. 执行历史记录中,序号为1的命令

  2. PowerDesigner最基础的使用方法入门学习(转)

    PowerDesigner最基础的使用方法入门学习   1:入门级使用PowerDesigner软件创建数据库(直接上图怎么创建,其他的概念知识可自行学习) 我的PowerDesigner版本是16. ...

  3. Class与Style绑定

    本文主要介绍如何使用Vue来绑定操作元素的class列表和内联样式(style属性). 因为class和style都是属性,所以通过v-bind命令来处理它们:只需要通过表达式计算出结果即可,不过字符 ...

  4. Android 开发工具类 12_PullXmlTools

    xml 格式数据 <?xml version="1.0" encoding="UTF-8"?> <user-list> <user ...

  5. javascript 数组去重的6种思路

    前端在日常开发中或多或少都会碰到有对数据去重的需求,实际上,像是lodash这些工具库已经有成熟完备的实现,并且可以成熟地运用于生产环境.但是这并不妨碍我们从思维拓展的角度出发,看看去重可以用几种思路 ...

  6. C51单片机中data、idata、xdata、pdata的区别

    C51单片机中data.idata.xdata.pdata的区别 data: 固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小. idata: 固定指前 ...

  7. 深度学习--RNN,LSTM

    一.RNN 1.定义 递归神经网络(RNN)是两种人工神经网络的总称.一种是时间递归神经网络(recurrent neural network),另一种是结构递归神经网络(recursive neur ...

  8. ggplot2基础学习

    前言 ggplot2是R语言最流行的第三方扩展包,是RStudio首席科学家Hadley Wickham读博期间的作品,是R相比其他语言一个独领风骚的特点.包名中“gg”是grammar of gra ...

  9. plt绘制 2维、3维散点图

    # 3维import numpy as np import matplotlib.pyplot as plt from sklearn.datasets.samples_generator impor ...

  10. 《Tomcat日志系统详解》

    综合:Tomcat下相关的日志文件 Cataline引擎的日志文件,文件名catalina.日期.log Tomcat下内部代码丢出的日志,文件名localhost.日期.log(jsp页面内部错误的 ...