0.主题
今天通过一个判定给出年份是否为闰年的小程序来学习
- if 语句的嵌套
- 布尔类型
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
判断是否为闰年的逻辑很简单
如果年份能满足以下条件之一,则为闰年
- 能被4整除,但不能被100整除
- 能被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( )之间的区别在于,前者在输出完毕后自动的在末尾加一个换行符,而后者则不会。合理的使用这二者,以使输出格式规范简洁也是很重要的。