public class Wochentag {

	public static String wochentag(int t, int m, int j) {
		String[] wt = { "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag" };
		// Algorithmus von Wikipedia: https://de.wikipedia.org/wiki/Wochentagsberechnung
		// Hinweis: "Gaußklammer" = ABGERUNDET, hierfür können wir den cast (int) verwenden
		
		// Tabelle aus Wikipedia, Januar == index 0 usw.
		int[] m2 = { 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // Monat gemäß Tabelle!!!
		int y = j;  
		// Januar/Februar-Regel laut Wikipedia
		if(m == 1 || m ==2) y--; 
		int c = y / 100; 
		// Nur die letzten beiden Dezimal-Ziffern des Jahres
		y = y % 100;
		// Wochentag als Zahl -> wird ausgerechnet nach Wikipedia-Formel
		int w = (t + (int)(2.6 * m2[m-1] - 0.2) + y + (int)(y/4.0) + (int) (c/4.0) - 2*c) % 7;
		// Wikipedia: Wenn Ergebnis negativ, addiere 7!!!
		if(w < 0) w = w + 7;
		return wt[w]; // Aus Wochentag-Tabelle ablesen und zurückgeben
	}
	
	// Andere Variante (besser!) :-)
	public static String wochentag2(int day, int h, int k) {
		if(h < 3) { h = h+12; k = k -1; }
		int wochentag = (day + 2*h + (3*h+3)/5 + k + k/4 - k/100 + k/400 +1)%7;
		String[] wt = { "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag" };
		return wt[wochentag];
	}

	
	public static void main(String[] args) {
		int tag = Eingabe.readInt("Bitte den TAG des Datums eingeben (ganze positive Zahl): ");
		int monat = Eingabe.readInt("Bitte den MONAT des Datums eingeben (1...12): ");
		int jahr = Eingabe.readInt("Bitte das JAHR des Datums eingeben (ganze Zahl): ");
		String ergebnis = wochentag(tag, monat, jahr);
		System.out.println("Der " + tag + "." + monat + "." + jahr + " ist ein " + ergebnis);
		ergebnis = wochentag2(tag, monat, jahr);
		System.out.println("Der " + tag + "." + monat + "." + jahr + " ist ein " + ergebnis);

	}

}