1. 程式人生 > >利用JAVA實現判斷某一年是否為閏年

利用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~