利用JAVA實現判斷某一年是否為閏年
給定一個年份,判斷是否是閏年。條件為:
A:能被4整除,並且不能被100整除。或者
B:能被400整除。
分析:
首先題目中的A與B為兩個判斷閏年為真的選項,且屬於“非A則B”的情況,在這裡往往很容易想到如下結構來解決此問題
if(判斷條件A成立){
表示式1(為閏年)
}
else if(判斷條件B成立){
表示式1(為閏年)
}
其實想到這裡就已經算是完成這道題的基本任務, 也就是說當使用這種if..else if..
基本的if語句是能解決這個問題的,但是出題人其實在這裡是埋了一個陷阱,這也是國內的學生一般會常常犯下的問題。也就是說在中國,題目說什麼,老師要求什麼,我們就寫什麼,解決什麼問題,完成了之後就OK了。
這裡存在一個隱含結果,是如果不是閏年,應該怎麼辦?
其實也很簡單,就在原有的結構
if(判斷條件A成立){
表示式1(為閏年)
}
else if(判斷條件B成立){
表示式1(為閏年)
}
後面加一個else{(不是閏年應該怎麼辦)}
的語句,看似添加了一個很簡單的語句,但正是因為這條語句,才使得整個程式變的完整。
實驗:
我們先將未加上最後一條else
語句的源程式寫出,用2000年和2001年來測試,按照if..else if..
結構寫出原始碼如下:
package com.tencentos; import java.util.Scanner; public class Week1homework1 { public static void main(String[] args) { Scanner scan=new Scanner(System.in); System.out.print("Plese input the year:"); int year=scan.nextInt(); if(year%4==0 && year%100!=0){ System.out.print("Congratulation! It's the leap year!"); }else if(year%400==0){ System.out.print("Congratulation! It's the leap year!"); } scan.close(); } }
當輸入“2000”時,一切如我們所願,控制框內彈出的反饋正是我們想要的,2000年也確實是閏年。
但是當我們輸入“2001”時,控制框會直接結束,沒有任何的反應,這便是這道題的一個小陷阱。
於是我們在最後一個else...if...
結構後多加一個else...
結構,如下
else{
System.out.print("Sorry,It's not the leap year.");
}
就可以解決上述問題,加上else...
語句之後,我們再將“2001”輸入後,得到了我們想要的反饋如下
到這裡就完成了整個題目要求的內容,整個源程式程式碼如下:
package com.tencentos; import java.util.Scanner; public class Week1homework1 { public static void main(String[] args) { Scanner scan=new Scanner(System.in);//開啟掃描器 System.out.print("Plese input the year:"); int year=scan.nextInt(); if(year%4==0 && year%100!=0){ System.out.print("Congratulation! It's the leap year!"); }else if(year%400==0){ System.out.print("Congratulation! It's the leap year!"); }else { System.out.print("Sorry,It's not the leap year."); } scan.close(); }
}
Enjoy it~