partitionist
Erfahrenes Mitglied
Hallo Leute, ich habe versucht die Wochentagsberechnung ab dem 1.1.1601 zu programmieren doch ich komme nicht auf den fehler, wahrscheinlich liegt es an der Berechnung, ich hoffe ihr findet den fehler:
Code:
import Prog1Tools.IOTools;
public class Aufgabe13
{
public static void main(String[] args)
{
System.out.println("Wochentag Berechnung");
System.out.println();
System.out.println("Geben Sie ein gueltiges Datum ab dem 1. Januar 1601 ein.");
String eingabe;
int tag, monat, jahr;
int mo[] = new int[15];
System.out.print("Bitte geben Sie den Tag ein: ");
tag = IOTools.readInteger();
System.out.print("Bitte geben Sie den Monat ein: ");
monat = IOTools.readInteger();
System.out.print("Bitte geben Sie das Jahr ein: ");
jahr = IOTools.readInteger();
System.out.println();
if(monat==1 || monat==3 || monat==5 || monat==7 || monat==8 || monat==10 || monat==12)
{
mo[monat] = 31;
}
else if(monat==2)
{
mo[monat] = 28;
}
else if(monat==4 || monat==6 || monat==9 || monat==11)
{
mo[monat] = 30;
}
if((jahr % 4) == 0 || (jahr % 400) == 0)
{
mo[2] = 29;
System.out.println("Jahr "+jahr+" ist ein Schaltjahr!");
}
System.out.println("Monat ["+monat+"] hat ["+mo[monat]+"] Tage");
int startJahr = 1601;
//Eingegebenes Jahr - 1601
int x = jahr - startJahr;
//Schaltjahre
int schaltJahr = x/4;
int normalJahr = jahr - schaltJahr;
int z = schaltJahr * 366;
int y = normalJahr * 365;
//day = alle Tage
int day = z + y;
System.out.println("Schaltjahr:"+schaltJahr);
System.out.println("Normal1jahr:"+normalJahr);
System.out.println("Tage:"+day);
day = tag + mo[monat];
day = day % 7;
day = day + normalJahr + (normalJahr/4) - (normalJahr/100) + (normalJahr/400);
day = day % 7;
if(day == 1) System.out.println("Montag");
else if(day == 2) System.out.println("Dienstag");
else if(day == 3) System.out.println("Mittwoch");
else if(day == 4) System.out.println("Donnerstag");
else if(day == 5) System.out.println("Freitag");
else if(day == 6) System.out.println("Samstag");
else if(day == 0) System.out.println("Sonntag");
}
}