日撸 Java 三百行: DAY4 闰年的计算

本文通过一个Java小程序展示了如何判断年份是否为闰年,包括使用if语句的嵌套和布尔类型。程序包含两个判断闰年的方法:一个使用逻辑操作符连接条件,另一个采用if-elseif-else结构。此外,讨论了Java中布尔类型的使用以及方法调用的可读性。最后,提到了System.out.println()和System.out.print()的区别在代码格式规范中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0.主题

今天通过一个判定给出年份是否为闰年的小程序来学习

  1.  if 语句的嵌套
  2. 布尔类型

1.程序:闰年的计算

首先给出程序代码

package basic;

public class LeapYear {
	
	public static void main( String args[ ] ) {
		//Test isLeapYear
		int tempYear = 2021;
		
		System.out.print("" + tempYear + " is ");
		if( !isLeapYear( tempYear ) ) {
			System.out.print("NOT ");
		} // Of if
		System.out.println("a leap year.");
		
		tempYear = 2000;
		
		System.out.print("" + tempYear + " is ");
		if( !isLeapYear( tempYear ) ) {
			System.out.print("NOT ");
		} // Of if
		System.out.println("a leap year.");
		
		tempYear = 2100;
		
		System.out.print("" + tempYear + " is ");
		if( !isLeapYear( tempYear ) ) {
			System.out.print("NOT ");
		} // Of if
		System.out.println("a leap year.");

		tempYear = 2004;
		
		System.out.print("" + tempYear + " is ");
		if( !isLeapYear( tempYear ) ) {
			System.out.print("NOT ");
		} // Of if
		System.out.println("a leap year.");
		
		//Test isLeapYearV2
		System.out.println("Now use the second version.");
		tempYear = 2021;
		
		System.out.print("" + tempYear + " is ");
		if( !isLeapYearV2( tempYear ) ) {
			System.out.print("NOT ");
		} // Of if
		System.out.println("a leap year.");
		
		tempYear = 2000;
		
		System.out.print("" + tempYear + " is ");
		if( !isLeapYearV2( tempYear ) ) {
			System.out.print("NOT ");
		} // Of if
		System.out.println("a leap year.");

		tempYear = 2100;
		
		System.out.print("" + tempYear + " is ");
		if( !isLeapYearV2( tempYear ) ) {
			System.out.print("NOT ");
		} // Of if
		System.out.println("a leap year.");

		tempYear = 2004;
		
		System.out.print("" + tempYear + " is ");
		if( !isLeapYearV2( tempYear ) ) {
			System.out.print("NOT ");
		} // Of if
		System.out.println("a leap year.");
	}
	
	/**
	 ****************
	 * Is the given year leap?
	 * 
	 * @param paraYear
	 ****************
	 */
	public static boolean isLeapYear( int paraYear ) {
		if( ( paraYear % 4 == 0 ) && ( paraYear % 100 != 0 ) || ( paraYear % 400 == 0 ) ) {
			return true;
		} else {
			return false;
		} // Of if
	} // Of isLeapYear
	
	public static boolean isLeapYearV2( int paraYear ) {
		if( paraYear % 4 != 0 ) {
			return false;
		} else if( paraYear % 400 == 0 ) {
			return true;
		} else if( paraYear % 100 == 0 ) {
			return false;
		} else {
			return true;
		} // Of if
	} // Of isLeapYearV2
} // Of class LeapYear

判断是否为闰年的逻辑很简单

如果年份能满足以下条件之一,则为闰年

  1. 能被4整除,但不能被100整除
  2. 能被400整除

程序的执行结果如下

 2.if语句的使用

在这个例子中,实现判断闰年方法的两个版本

  • 第一个版本中,通过使用逻辑操作符&&和||来连接条件

能被4整除,但不能被100整除表示为 ( paraYear % 4 == 0 ) && ( paraYear % 100 != 0 )

能被400整除表示为 ( paraYear % 400 == 0 )

因为满足二者之一则为闰年,故最终的条件为 ( paraYear % 4 == 0 ) && ( paraYear % 100 != 0 ) || ( paraYear % 400 == 0 )。

我个人认为这种表示方法更为清晰一点。

  • 第二个版本则使用连续的if - else if - ... - else来做判断

3.布尔类型

java和C/C++在此处有些不同,在java中不允许将一个数字作为布尔值使用,而C/C++中可以用零表示false,用非零表示true。

4.方法调用

一个好的方法名可以使得方法简单易用,这个例程中判断是否为闰年的方法名为isLeapYear,除了本身清晰的表现了方法的功能之外,还在其他地方提升了代码的可读性。

比如在调用该方法来判定是否为闰年时,if语句中的条件为 !isLeapYear( tempYear ) 而非 isLeapYear( tempYear ) == false。前者相较于后者,显然更符合人类的阅读习惯,因而提高了代码的可读性。

5.其他

System.out.println( )和System.out.print( )之间的区别在于,前者在输出完毕后自动的在末尾加一个换行符,而后者则不会。合理的使用这二者,以使输出格式规范简洁也是很重要的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值