可能大家在面试中会遇到中国式传统问题,:)由于大家不记得这些问题的规律而丢分,太可惜了。

今天分享一个有于leap year的问题,其实有个口诀,特别好使:四年一闰,百年不闰,四百年再闰。大家记好这个,以后就可以轻松应对了,其实不难。

下面给一个我写的例子,可能不是最好,但思路很简单,呵呵。简约为美吧。同时,给出一个java对象实例过程的例子。初学都可以多留意下,面试中经常遇到。LOL

package myitem;

import java.io.Console;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

class A{
    {
        System.out.println("Aa");
    }
    A(){
        System.out.println("Ab");
    }
}
/**
 * @author hill
 *
 */
public class LeapYear extends A{
    private int year;
    private int month;
    private int day;
    private static Map dayMap;
    
    {
        System.out.println("a");
    }
    static{
        System.out.println("b");
        dayMap = new HashMap();
        dayMap.put("1", "31");
    }
    LeapYear(){
        System.out.println("c");
    }
    public int days(int year,int month,int day){
        int days =0;
        boolean isLeap = false;
        if((year%4==0&&year%100!=0) || year%400==0){
            isLeap = true;
        }
        for(int i=1; i<=month-1;i++){
            switch(i){
                case 1:
                    days+=31;
                    break;
                case 2:
                    if(isLeap){
                        days+=29;
                    }else{
                        days+=28;
                    }
                    break;
                case 3:
                    days+=31;
                    break;
                case 4:
                    days+=30;
                    break;
                case 5:
                    days+=31;
                    break;
                case 6:
                    days+=30;
                    break;
                case 7:
                    days+=31;
                    break;
                case 8:
                    days+=31;
                    break;
                case 9:
                    days+=30;
                    break;
                case 10:
                    days+=31;
                    break;
                case 11:
                    days+=30;
                    break;
                case 12:
                    days+=31;
                    break;
            }
        }
        days = days + day;
        return days;
    }
     @SuppressWarnings("unused")
    private static String readDataFromConsole(String prompt) {  
            Scanner scanner = new Scanner(System.in);  
            System.out.print(prompt);  
            return scanner.nextLine();  
        }  
    public static void main(String[] args) {
//        Console console = System.console();
        String param = readDataFromConsole("Please Enter:");
        System.out.println(param);
        String[] paramStr=param.split("-");
        String year=paramStr[0];
        String month=paramStr[1];
        String day=paramStr[2];
//        if(console!=null){
//            year = console.readLine("Enter Year:");
//            month = console.readLine("Enter Month:");
//            day = console.readLine("Enter Day:");
            
            LeapYear leapYear = new LeapYear();
            int days = leapYear.days(Integer.parseInt(year),Integer.parseInt(month),
                    Integer.parseInt(day));
            System.out.println(String.valueOf(days));
//        }
        
        
    }

}