您的位置 首页 java

Java经典案例:闰年判断程序

问题

闰年 (Leap Year)是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的。

地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一 回归年

公历的平年(非闰年)只有365日,比回归年短约0.2422 日,所余下的时间约为四年累计一天,故每四年则于2月加1天,使当年的历年长度为366日,这一年就为闰年。

但是,如果按照每四年一个闰年计算,平均每年就要多算出0.0078天,这样经过四百年就会多算出大约3天来,因此,每四百年中要减少三个闰年。

所以规定,公历年份是 100 的倍数的,必须同时也是400的倍数,才是闰年;不是400的倍数的,虽然是100的倍数,也是平年。

这就是通常所说的:四年一闰,百年不闰,四百年再闰。

例如,2000年是闰年,1900年则是平年。

本案例需要使用交互的方式判断某年是否为闰年:用户从控制台输入需要判断的年份值,由程序判断该年是否为闰年,并将判断结果输出到控制台。程序交互过程如图-1所示:

方案

首先,此案例需要从控制台接收用户录入的年份值,使用 scanner 类的相应方法即可接收控制台的录入;

其次,根据闰年的规则可以总结出,如果年份可以被 400 整除 ,则必然是闰年;另外,如果年份可以被 4 整除,但是不能被 100 整除,则也是闰年;其他年份则是平年(非闰年)。因此,需要使用取余运算符(%)判断整除,并需要使用逻辑运算符来构建判断表达式,以进行判断。

步骤

实现此案例需要按照如下步骤进行。

步骤一:定义类及 main方法

首先定义一个名为 LeapYear的类,并在类中添加 main方法。代码如下所示:

public class LeapYear { 
 public static void main(String[] args) { 
 }
 } 

步骤二:读取控制台的输入

在main方法中,实例化Scanner类,并调用Scanner类的nextInt() 方法接收用户从控制台输入的年份数值,使用完毕后将scanner对象关闭。代码如下所示:

import java.util.Scanner;public class LeapYear { 
 public static void main(String[] args) { 
 Scanner scanner = new Scanner(System.in);
 System.out.println("请输入年份(例如:2012)");
 int year = scanner.nextInt();
 scanner. close (); 
 }
 } 

步骤三:闰年判断

某年份只需要满足下列两个条件之一,即可认定是闰年:

  • 年份可以被 4 整除且不能被 100 整除;

  • 年份可以被400 整除。

因此,需要使用 % 运算符 、== 运算符、!= 运算符、&& 和 || 运算符,来综合判断某年份是否为闰年。代码如下所示:

import java.util.Scanner;public class LeapYear {
 public static void main(String[] args) {
 Scanner scanner = new Scanner(System.in);
 System.out.println("请输入年份(例如:2012)");
 int year = scanner.nextInt();
 scanner.close();
 boolean isLeapYear = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0; }
 } 

步骤四:输出结果

使用三目运算符,构建表示判断结果的 String 类型信息,并输出到控制台。代码如下所示:

import java.util.Scanner;public class LeapYear {
 public static void main(String[] args) {
 Scanner scanner = new Scanner(System.in);
 System.out.println("请输入年份(例如:2012)");
 int year = scanner.nextInt();
 scanner.close(); 
 boolean isLeapYear = (year % 4 == 0 && year % 100 != 0)
 || year % 400 == 0; 
 String  msg  = isLeapYear ? year + "是闰年" : year + "不是闰年";
 System.out.println(msg);
 }
 } 

完整代码

本案例的完整代码如下所示:

import java.util.Scanner;
public class LeapYear {
 public static void main(String[] args) {
 Scanner scanner = new Scanner(System.in);
 System.out.println("请输入年份(例如:2012)");
 int year = scanner.nextInt();
 scanner.close();
 boolean isLeapYear = (year % 4 == 0 && year % 100 != 0)
 || year % 400 == 0; 
 String msg = isLeapYear ? year + "是闰年" : year + "不是闰年";
 System.out.println(msg);
 }
 } 
如果您觉得这篇文章对您有帮助的话,请您收藏转发给更多人,如果觉得我们有失误之处,请大家指正 

文章来源:智云一二三科技

文章标题:Java经典案例:闰年判断程序

文章地址:https://www.zhihuclub.com/188539.shtml

关于作者: 智云科技

热门文章

网站地图