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); } }