Comment detail

除算・余剰を使わずに閏年 (Nested Flatten)

一応、条件は満たしているかと思います。 こんな感じでどうでしょうか?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
public class Sample124 {
    public static boolean isLeepYear(int year) {
        if (!isDividedBy4(year)) return false;
        String sYear = String.valueOf(year);
        if (sYear.endsWith("00")) {
            return isDividedBy4(Integer.parseInt(sYear.substring(0, sYear.length() - 2)));
        }
        return true;
    }
    private static boolean isDividedBy4(int num) {
        return (num & 3) == 0;
    }

    public static void main(String[] args) {
        System.out.println("1900:" + isLeepYear(1900));
        System.out.println("2000:" + isLeepYear(2000));
        System.out.println("2008:" + isLeepYear(2008));
        System.out.println("2100:" + isLeepYear(2100));
    }
}
素直にやってみました。

実行結果
-------
A.D. 1900: false
A.D. 2000: true
A.D. 2008: true
A.D. 2009: false
A.D. 2100: false
-------
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
public class LeapYear {
    public static void main(String[] args) {
        System.out.println("A.D. 1900: " + isLeapYear(1900));
        System.out.println("A.D. 2000: " + isLeapYear(2000));
        System.out.println("A.D. 2008: " + isLeapYear(2008));
        System.out.println("A.D. 2009: " + isLeapYear(2009));
        System.out.println("A.D. 2100: " + isLeapYear(2100));
    }

    public static boolean isLeapYear(int aYear) {
        return isDivisible(aYear, 4) ? (isDivisible(aYear, 100) ? (isDivisible(aYear, 400) ? true : false) : true) : false;
    }

    public static boolean isDivisible(int aLeft, int aRight) {
        while (aLeft >= aRight) {
            aLeft -= aRight;
        }
        return aLeft == 0;
    }
}

Index

Feed

Other

Link

Pathtraq

loading...