# Schleifen Problem



## hanno88 (12. Jun 2009)

hi

Aufgabe:
1. Programmieren Sie eine Klasse, die mit der modifizierten Gaußschen Osterformel von Lichtenberg das Osterdatum für ein Jahr J berechnet:
• Säkularzahl K (J) = J DIV 100
• Säkulare Mondschaltung M (K) = 15 + (3K + 3) DIV 4 − (8K + 13) DIV 25
• Säkulare Sonnenschaltung: S (K) = 2 − (3K + 3) DIV 4
• Mondparameter: A (J) = J MOD 19
• Keim für den ersten Vollmond im Frühling: D (A, M) = (19A + M) MOD 30
• Kalendarische Korrekturgröße: R (D, A) = D DIV 29 + (D DIV 28 − D DIV 29) (A DIV 11)
• Ostergrenze: OG (D, R) = 21 + D − R
• Erster Sonntag im März: SZ (J, S) = 7 − (J + J DIV 4 + S) MOD 7
• Entfernung des Ostersonntags von der Ostergrenze (Osterentfernung in Tagen): OE (OG, SZ) = 7 − (OG − SZ) MOD 7
• Datum des Ostersonntags als Märzdatum: OS = OG + OE Der 32. März ist der 1. April und so weiter.


```
public class OsterdatumMain {

	public static void main(String[] argv)
	{
		MeineAusgabe.schreibe("Bitte Jahreszahl eingeben:");
		int jahreszahlEingabe = MeineEingabe.erfasseInt();
		System.out.print("Ostersonntag ist der ");
		if(new OsterFormel(jahreszahlEingabe).ostertag() < 31) 
			System.out.print(new OsterFormel(jahreszahlEingabe).ostertag() + ". März " + jahreszahlEingabe + "\n");
		else System.out.print(new OsterFormel(jahreszahlEingabe).ostertag()-31 + ". April " + jahreszahlEingabe + "\n");
	}
}




class OsterFormel
{
	private int jahr;
	int K, A, M, S, D, R, OG, SZ, OE, OS, ostern;
	boolean isSchaltjahr = true;                                              
	public OsterFormel(int jahr)
	{
		this.jahr = jahr;
	}
	public int ostertag()
	{
		K = jahr / 100;
		M = 15 + (3*K + 3) / 4 - (8*K + 13) /25;
		S = 2 - (3*K + 3) / 4;
		A = jahr % 19;
		D = (19*A + M) % 30;
		R = (D / 29) + (D / 28) - (D / 29) * (A / 11);
		OG = 21 + D - R;
		SZ = 7 - (jahr + jahr / 4 + S) % 7;
		OE = 7 - (OG - SZ) % 7;
		OS = OG + OE;
	
			
		if(isSchaltjahr == true)                                      
			return ostern = 23 + D;
		else 
			return ostern = 22 + D;

			
		
		}

	public boolean isSchaltjahr(){
		boolean ausgabe = true;
		if (jahr % 4 == 0)
			if (jahr % 100 == 0)
				if (jahr % 400 == 0)
					ausgabe = true;
				else
					ausgabe = false;
			else 
				ausgabe = false;
		else 
			ausgabe = false;
		return ausgabe;
	}


}
```

in der Klasse OsterFormel, krieg ich das über der boolean abfrage nicht hin, dass sich das Datum dann in einem Schaltjahr auf + 1 Tag ändert. Kann mir das jmd. bitte mal überarbeiten. 2008 muss der Ostersonntag der 23. März ist und 2009 der 12. April sein. bei mir is es momentan 2008 der 24.März und 2009 ist es der 12. April


----------



## hanno88 (13. Jun 2009)

habs oben nochmal aktuallisiert


----------



## HLX (13. Jun 2009)

Du hast eine Variable isSchaltjahr und eine Methode isSchaltjahr(). Die Methode verwendest du jedoch nicht. Du greifst ausschließlich auf die Variable zu, die immer true liefert.


----------

