Címke: húsvétvasárnap
1 blog bejegyzésnél szerepel:
9 db hozzá kapcsolódó címke:
2017 (24), algoritmus (26), dátumkezelés (8), Java forráskód (50), metódus (21), naptár (23), programozás (87), szakmai modul (78), ünnepnap (10)
1 blog bejegyzésnél szerepel:
9 db hozzá kapcsolódó címke:
2017 (24), algoritmus (26), dátumkezelés (8), Java forráskód (50), metódus (21), naptár (23), programozás (87), szakmai modul (78), ünnepnap (10)
A nyugati kereszténység húsvétvasárnapja legkorábban március 22-ére, legkésőbb április 25-re esik. Másképpen: a húsvét mozgó ünnep, azaz nem esik az év ugyanazon napjára minden évben. Az első niceai zsinat 325-ben úgy határozott, hogy legyen a keresztény húsvét időpontja a tavaszi napéjegyenlőség utáni első holdtöltét követő vasárnap.
A húsvét kiszámítására a legismertebb algoritmus Gauss módszere. A Java implementációban az easterGauss() függvény által elfogadható év paramétert életszerűen lekorlátoztam 1900-2099-ig terjedő évekre, valamint a vezérlés az aktuális és a rákövetkező 19 évben ír ki eredményt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
private static final int MIN_YEAR=1900, MAX_YEAR=2099; public static String easterGauss(int y) { if(y<MIN_YEAR || y>MAX_YEAR) throw new IllegalArgumentException( y+" not in ["+MIN_YEAR+", "+MAX_YEAR+"]"); int a=y%19, b=y%4, c=y%7, d=(19*a+24)%30, e=(2*b+4*c+6*d+5)%7, h=22+d+e; if(e==6 && d==29) //1. kivétel h=50; if(e==6 && d==28 && a>10) //2. kivétel h=49; String message="Húsvétvasárnap "+y+" évben: "; if(h<=31) //március message+="március "+h+"."; else //április message+="április "+(h-31)+"."; return message; } public static void main(String[] args) { System.out.println("Mikor van húsvétvasárnap az alábbi években?"); int startYear= Math.max(MIN_YEAR, Calendar.getInstance().get(Calendar.YEAR)); int endYear=Math.min(startYear+19, MAX_YEAR); for (int y=startYear; y<=endYear; y++) System.out.println(easterGauss(y)); } |
Az algoritmus részletes magyarázata alapján könnyen kiegészíthető úgy, hogy tetszőleges évre, illetve különböző naptárakra is működjön.
A kapott eredmények megtekinthetők:
A feladat – a kivételkezeléstől eltekintve – a Java SE szoftverfejlesztő tanfolyam szakmai moduljának 5-8. óra: Vezérlési szerkezetek alkalmához kötődik.