0votos

Calcular la fecha de pascuas en Java

por Mickel hace 16 días

Acá otra solución en Java.

Diseñar una función que retorne la fecha de pascuas

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import javax.swing.JOptionPane; 
 
public class Pascua {    
     
    private static int M; 
    private static int N; 
    private int year; 
     
    public Pascua(int year) {      
        if (year >= 1583 && year <= 1699) { 
            M = 22; 
            N = 2; 
        } else if (year >= 1700 && year <= 1799){ 
            M = 23; 
            N = 3; 
        } else if (year >= 1800 && year <= 1899) { 
            M = 23; 
            N = 4; 
        } else if (year >= 1900 && year <= 2099) { 
            M = 24; 
            N = 5; 
        } else if (year >= 2100 && year <= 2199) { 
            M = 24; 
            N = 6; 
        } else if (year >= 2200 && year <= 2299) { 
            M = 25; 
            N = 0; 
         
        this.year = year; 
    }  
     
    public void fechaPascua () { 
        int a, b, c, d, e, dia; 
        String mes; 
         
        a = year % 19; 
        b = year % 4; 
        c = year % 7; 
        d = (19 * a + M) % 30; 
        e = (2 * b + 4 * c + 6 * d + N) % 7; 
         
        if ((d + e) < 10) { 
            dia = d + e + 22; 
            mes = "Marzo"; 
        } else { 
            dia = d + e - 9; 
            mes = "Abril"; 
        }        
        JOptionPane.showMessageDialog(null, "El " + dia + " de " + mes + " se celebra la pascua"); 
     
    public static void main(String[] args) { 
        int year; 
        year = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el año")); 
        Pascua pascua = new Pascua(year); 
        pascua.fechaPascua(); 
     
3 comentarios
0votos

Escrito por Emanuel hace 15 días

Gracias Mickel por compartir tu solución.
Un detalle sobre el diseño, sería bueno separar el formateo del mensaje del resultado en otra función, por ejemplo
Capturas la fecha de pascuas
fecha_de_pascuas = pascuas.fechaPacuas();

Y luego mostras en el JOptionPane, ejecutando la siguiente función.
mostrar_fecha_de_pascuas( fecha_de_pascuas );

De esa manera no le hacés a la función para calcular la fecha dependiente del JOptionPane, y así poder usar con otros tipos formateos, o poder calcular otras fechas relacionadas a la fecha de pascuas.

Saludos
0votos

Escrito por Mickel hace 15 días

Gracias por el consejo, lo tendré en cuenta!
0votos

Escrito por Emanuel hace 14 días

Ok =) Te desafío a que modifiques tu solución =D jeje y te doy un voto

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.