除算・余剰を使わずに閏年
Posted feedbacks - Java
一応、条件は満たしているかと思います。 こんな感じでどうでしょうか?
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;
}
}
|





greentea #5245() Rating-1/13=-0.08
see: Wikipedia 閏年
[ reply ]