# Berechnung von Ostern und Ramadan!



## deni100 (16. Nov 2010)

Hallo erfahrene Programmierer, ich bins wieder deni100 . Der nervende Neuling .
In der Schule haben wir das if else if gelernt und ich denke ich kann  das gut. Nun jetzt sollen wir es schaffen, durch Errechnung Ostern zu errechnen und da ich Moslem bin , würde ich gerne auch den Fastenmonat Ramadan berechnen wollen. 

Hier ist die Problemstellung. 
http://img269.imageshack.us/img269/4508/bildoa.jpg


Hier ist das Problem:
http://img230.imageshack.us/img230/213/bildkopie.jpg

z.B wird p = ....
danach wird in p das danach kommende j verlangt, was ich nicht verstehe. Ich hab den Lehrer gefragt, er meinte das eines überflüssig ist oder zumindest man es vllt anders formulieren kann.

Desweiteren, würde ich gerne den Fastenmonat ausrechnen. Ich würde gerne das Datum von diesem Jahr nehmen und alle weiteren mitberechnen. 
Das Berechnen vom Ramdanfest ist einfach. Dieses Jahr war es am : 8. September 2010. Das nächste wird 11 Tage früher sein. Das heißt 29. Aug. 2011 .

Wie kann ich das in JAVA formulieren.

Für das Herausgeben von Wochentagen habe ich das hingekriegt:


```
public void zeigeWochentagAus (){
		
		
		if (monat<3){
			monat=monat+12;
			jahr=jahr-1;
		}
		y = (jahr%100);
		c = (jahr/100);
		wochentag  = (tag+((13*(monat+1))/5)+y+(y/4)+(c/4)-2*c)% 7;
		
		
		 if (wochentag == 0){
			System.out.println("Samstag ");
		}
			else if (wochentag ==1){
				System.out.println("Sonntag");
		}
				else if (wochentag  ==2){
					System.out.println("Montag ");
		}
					else if (wochentag  ==3){
						System.out.println("Dienstag ");
		}
						else if (wochentag  ==4){
							System.out.println("Mittwoch ");
		}
							else if (wochentag  ==5){
								System.out.println("Donnerstag ");
		}
								else if (wochentag  ==6){
									System.out.println("Freitag ");
		}
		 
		 
			
		
		
		
	}
```


----------



## nrg (16. Nov 2010)

Hast du die Angabe fotografiert??? Also ich kann darauf nur mit Mühe etwas erkennen. Aber jetzt mal ohne weiter auf die Angabe oder auf deinen Code einzugehen, steht da doch, dass du GregorianCalendar verweden darfst. Dann mach das doch auch


----------



## deni100 (16. Nov 2010)

nrg hat gesagt.:


> Hast du die Angabe fotografiert??? Also ich kann darauf nur mit Mühe etwas erkennen. Aber jetzt mal ohne weiter auf die Angabe oder auf deinen Code einzugehen, steht da doch, dass du GregorianCalendar verweden darfst. Dann mach das doch auch





Ja ich darf den benutzen, aber wie soll ich den Ostern berechnen ?


----------



## nrg (16. Nov 2010)

Osterdatum ? Wikipedia


----------



## deni100 (16. Nov 2010)

nrg hat gesagt.:


> Osterdatum ? Wikipedia





Ja Link schicken nützt mir nicht, weil ich damit nichts anfangen kann, ich verstehe nicht wie ich das errechnen soll, weil oben von mir verlangt wird ich soll p =... währen j gefordert wird, das es noch gar nicht gibt :'(


----------



## nrg (16. Nov 2010)

du brauchst dich nicht für jeden post bedanken...

würde erstmal anfangen die Angabe abzutippen, weil das Foto (oder was immer das auch sein soll) von oben ist keinem zuzumuten.


----------



## homer65 (16. Nov 2010)

Du kannst ja auch nach Ostern und Java googeln. Da war direkt in den ersten Links eine Lösung deines Problems für Ostern.


----------



## deni100 (16. Nov 2010)

p= ganzjähriger Teil von j /100
n = Hunderterrest von j
j = 100p+ n

Wie soll ich das den rechnen, das meine ich


----------



## deni100 (16. Nov 2010)

homer65 hat gesagt.:


> Du kannst ja auch nach Ostern und Java googeln. Da war direkt in den ersten Links eine Lösung deines Problems für Ostern.





Ich würde gerne es so wie auf dem Blatt machen, damit ich das Lerne :rtfm:

Sorry für Doppelpost!


----------



## deni100 (16. Nov 2010)

Hör auf zu spammen man ???:L


----------



## LadyMilka (16. Nov 2010)

ich nehme an j steht für Jahr?


----------



## deni100 (16. Nov 2010)

LadyMilka hat gesagt.:


> ich nehme an j steht für Jahr?



Das ist das Problem , dass weis ich nicht, aber so wie es aussieht nehme ich das jetzt mal an


----------



## ARadauer (16. Nov 2010)

> ch würde gerne es so wie auf dem Blatt machen, damit ich das Lerne


ich kann leider hier nicht auf imageshack zugreifen... wie ist konkret die frage?
wie du den Rest einer Division ermitelst? Mit Modulo %


```
//      p= ganzjähriger Teil von j /100
//      n = Hunderterrest von j
//      j = 100p+ n
      
      int j = 2010;
      int p = 2010/100;
      int n = j%100;
      j = 100*p+n;
      
      System.out.println(j);
```


----------



## LadyMilka (16. Nov 2010)

wie sieht denn die "bestehende Datumsklasse" aus?

vielleicht sind dort schon die Buchstaben definiert?


----------



## deni100 (16. Nov 2010)

LadyMilka hat gesagt.:


> wie sieht denn die "bestehende Datumsklasse" aus?
> 
> vielleicht sind dort schon die Buchstaben definiert?





```
package DataLos;
import java.util.Date;//Import für das Setzen vom heutigem Datum!
import java.util.GregorianCalendar;


import grundgeruest.BBSKonsole ; //importiert das Grundgerüst (beinhaltet auch die BBSKonsole)


public class DatumKlasse {

	int tag,monat,jahr,wochentag,y,c;
	public void LeseDatumvonTastatur (){ //Liest die Daten von der Konsole
		tag = BBSKonsole.leseInteger("Bitte geben Sie den Tag ein: ");
		monat = BBSKonsole.leseInteger("Bitte geben Sie den Monat ein: ");
		jahr = BBSKonsole.leseInteger("Bitte geben Sie das Jahr ein: ");
		
		
	}
	
	public void setzeAktuellesDatum(){ // Setzt das aktuelle Datum 
		Date dt = new Date();
		System.out.println( "Datum = " + dt );         
		
		
	
	}
	public void zeigeWochentagAus (){
		
		
		if (monat<3){
			monat=monat+12;
			jahr=jahr-1;
		}
		y = (jahr%100);
		c = (jahr/100);
		wochentag  = (tag+((13*(monat+1))/5)+y+(y/4)+(c/4)-2*c)% 7;
		
		
		 if (wochentag == 0){
			System.out.println("Samstag ");
		}
			else if (wochentag ==1){
				System.out.println("Sonntag");
		}
				else if (wochentag  ==2){
					System.out.println("Montag ");
		}
					else if (wochentag  ==3){
						System.out.println("Dienstag ");
		}
						else if (wochentag  ==4){
							System.out.println("Mittwoch ");
		}
							else if (wochentag  ==5){
								System.out.println("Donnerstag ");
		}
								else if (wochentag  ==6){
									System.out.println("Freitag ");
		}
		 
		 
			
		
		
		
	}
	public <jahr> void zeigeOsterdatum(){
		int j,p,r,q,x,y,a,b,c,d,e,f,g;
		 p = jahr / 100;
		 q = p /3;
		 r = p /4;
		 x =(15+p-q-r) % 30;
		 y =(4+p-r) % 7;
		 a = jahr % 19;
         b = jahr % 4;
         c = jahr % 7;
         d = (19*a +x) % 30;
         e = (2*b+4*c+6*d+y) % 7;
         
         


		 

		
		
		
	}
	public void gebeDatumklassichAus(){ // Gibt das klassische Datum aus 
		System.out.println("klasiches Datum: ");
		System.out.println(tag + "." + monat + "." + jahr);
		System.out.println("_____________________________");
		
		
		
	}
	public void gebeDatuminternationalAus(){ // Gibt das internationale Datum aus
		System.out.println("internationales Datum: ");
		System.out.println(jahr + "." + monat + "." + tag);
		System.out.println("_____________________________");
		
	}
	public void gebeTagAus(){ //Gibt den Tag aus
		System.out.println("Der"+" " +tag+ ".te"+" " +"Tag des Monates");
		
	}
	public void gebeMonatAus(){ //Gibt den Monat aus
		System.out.println("Der"+" " +monat+ ".te"+" " +"Monat des Jahres");
		
	}
	public void gebeJahrAus(){ //Gibt das Jahr aus
		System.out.println("Datumsjahr:"+""+jahr);
	}
	public void gebeMonatsNamenAusIF(){ // Hier wird das Datum mit If heruasgefunden
		
			if (monat == 1){
				System.out.println("Januar ");
			}
			if (monat ==2){
				System.out.println("Februar");
			}
			if (monat ==3){
				System.out.println("März ");
			}
			if (monat ==4){
				System.out.println("April ");
			}
			if (monat ==5){
				System.out.println("Mai ");
			}
			if (monat ==6){
				System.out.println("Juni ");
			}
			if (monat ==7){
				System.out.println("Juli ");
			}
			if (monat ==8){
				System.out.println(" August ");
			}
			if (monat ==9){
				System.out.println(" September ");
			}
			if (monat ==10){
				System.out.println("Oktober ");
			}
			if (monat ==11){
				System.out.println("November ");
			}
			if (monat ==12){
				System.out.println("Dezember ");
			}
	}
	public void gebeMonatsNamenAusIFELSEIF (){ // Hier wird das Datum mit if else if heruasgefunden
		  
		 if (monat ==1) {
			 System.out.println("Januar ");  
	        } else if (monat ==2) {
	         System.out.println("Februar ");;		
	        } else if (monat ==3)   {
	         System.out.println("März ");
	        } else if (monat ==4){
	         System.out.println("April ");
	        } else if (monat ==5){
	         System.out.println("Mai ");
	        } else if (monat ==6){
	         System.out.println("Juni ");
	        } else if (monat ==7){
	         System.out.println("Juli");
	        } else if (monat ==8){
	        	System.out.println("August ");
	        } else if (monat ==9){
	        	System.out.println("September ");
	        } else if (monat ==10){
	        	System.out.println("Oktober ");
	        } else if (monat ==11){
	        	System.out.println("November ");
	        } else if (monat ==12){
	        	System.out.println("Dezember ");
	        }        
		
				   
		   
		   }
	public void gebeRamadanMonatAus(){
		
		
	}
		
	
	}
```

bin gerade am arbeiten, versuche es hinzukriegen!


----------



## deni100 (16. Nov 2010)

So das mit Ostern habe ich hingekriegt, wie schaffe ich es Ramadan auszurechnen. Ramadan war dieses Jahr am 8.September und ist jedes Jahr 11 Tage früher. Wie kann ich das JAVA weiß machen


----------



## ARadauer (16. Nov 2010)

```
public <jahr> void zeigeOsterdatum(){
```
was soll das <jahr> ? 

zu den if else


```
String[] monate ={"", "Januar", "Februar", "März"....};
      
      System.out.println(monate[monat]);
```


----------



## Andi_CH (16. Nov 2010)

datumDiesesJahr + 1 Jahr - 11 Tage ???

Mit dem Calendar und etwas nachlesen müsste es eigentlich möglich sein das umzurechnen - was ich allerdings nicht weiss, ist ober der muslimische Kalender auch Schaltjahre kennt oder nicht


----------



## deni100 (16. Nov 2010)

Andi_CH hat gesagt.:


> datumDiesesJahr + 1 Jahr - 11 Tage ???
> 
> Mit dem Calendar und etwas nachlesen müsste es eigentlich möglich sein das umzurechnen - was ich allerdings nicht weiss, ist ober der muslimische Kalender auch Schaltjahre kennt oder nicht




geht um den normalen Gregorian Kalender . Die 11 Tage. Wie kann ich den die Schaltjahre einbauen .

Das Problem ist auch z.B
Ich habe Bauteil
Bei mir sind TAg Monat und Jahr jeweils eine Eingabe , wie kann ich den JAVA sagen, das ist das Datum von heute ? Da ich ja erst Tag, Monat und Jahr eingebe und die durch System.out.prinltn zusammen bastle ?


----------



## LadyMilka (16. Nov 2010)

Schau die mal SimpleDateFormat und Calendar/GregorianCalender in der Dokumentation an, das sollte dir helfen deine "Bauteile" zu einem Datum zusammen zubekommen.

Wenn ich mich recht erinnere, berücksichtigt der gregorianische Kalendar Schaltjahre.


----------



## Andi_CH (16. Nov 2010)

LadyMilka hat gesagt.:


> Wenn ich mich recht erinnere, berücksichtigt der gregorianische Kalendar Schaltjahre.


Natürlich tut der das, aber ich weiss nicht ob die Muselmanen Schaltjahre haben ...


----------



## ARadauer (16. Nov 2010)

Andi_CH hat gesagt.:


> Natürlich tut der das, aber ich weiss nicht ob die Muselmanen Schaltjahre haben ...



Wenn sie den Gregorianischen Kalender verwenden, vermutlich schon... oder haben sie einen anderen Kalender?


----------



## Andi_CH (16. Nov 2010)

Hm, wieso soll ein Muslim einen Kalender verwenden, der von einem Papst namens Gregor (bzw von dessen Wissenschaftler) definiert wurde?

Die haben etwa 622 Jahre Verschiebung gegenüber unserer Zeitrechnung - Mohammed hat ja auch später gelebt als Jesus.

Wikipedia - Islamischer Kalender

Aber eigentlich müsste dazu der TO mehr wissen und Stellung nehmen.

(Oder musst er die Aufgabe schon längst abgeben und interessiert sich nicht mehr dafür ;-) )


----------



## Gast2 (16. Nov 2010)

IslamicChronology (Joda time 1.6.2 API)

Hrm:


> Ein islamischer Monat beginnt immer mit der Sichtung der jüngsten Mondsichel (hilāl) in den Abendstunden. Besonders wichtig ist dies für die Festlegung der islamischen Festtage. Die Länge jedes Monats ist je nach Mondstellung 29 oder 30 Tage (Synodischer Monat: 29,53 Tage).
> 
> In Gebrauch ist auch ein System, nach dem die Monate abwechselnd 30 und 29 Tage lang sind. Das Jahr hat dann 354 Tage. Zur Anpassung des Kalenderjahres an das astronomische Mondjahr von 354,3671 Tagen wird in 11 von 30 Kalenderjahren am Jahresende ein Schalttag eingefügt.





> Aktuelle Ramadantermine
> 
> Im Rahmen des Koordinierungsrates der Muslime in Deutschland hatten sich die Verbände in Deutschland für das Jahr 2008 erstmals auf eine einheitliche Berechnungsmethode für den Ramadan geeinigt. Der Ramadan 2010 begann am 11. August und endete am 8. September.
> 
> ...



Also wenn das immer wieder aufs neue festgelegt wird und auch mal um den einen Tag vor oder zurück gelegt wird - dann ist es schwer das allgemeingültig zu berechnen.


----------



## deni100 (17. Nov 2010)

fassy hat gesagt.:


> IslamicChronology (Joda time 1.6.2 API)
> 
> Hrm:
> 
> ...



Das sage ich doch einen Termin im Gregorian bestimmen (8.September) und 11 Tage zurück, das braucht doch keinen islamischen Kalendar ;(


----------

