Hallo, hier ein etwas längerer Code und die Aufgabe dazu. Ich kann den Fehler einfach nicht finden. Es soll der Tag durch die Eingabe des Datums ermittelt werden.
Nur leider stimmen Datum und Tag bei der Ausgabe nicht immer überein. Habt ihr Tipps, wie man richtig nach Fehlern im Code sucht? Falls ihr Zeit habt, das alles durchzugehen, um den Fehler zu finden - tausend Dank! Ich hoffe, es ist trotz der umständlichen Variablennamen übersichtlich.
Die Aufgabe:
Nur leider stimmen Datum und Tag bei der Ausgabe nicht immer überein. Habt ihr Tipps, wie man richtig nach Fehlern im Code sucht? Falls ihr Zeit habt, das alles durchzugehen, um den Fehler zu finden - tausend Dank! Ich hoffe, es ist trotz der umständlichen Variablennamen übersichtlich.
Java:
import java.util.Scanner;
public class Wochentag {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("Tag: ");
int tag = s.nextInt();
System.out.print("Monat: ");
int monat = s.nextInt();
System.out.print("Jahr: ");
int jahr = s.nextInt();
int ganzzahligerAnteilEinesViertels = addGZAnteilEinesViertels(jahr);
int addMonthNumber = addNumberDependingOnMonth(monat, ganzzahligerAnteilEinesViertels, jahr);
int addDayToResult = addDay(addMonthNumber, tag);
int addDecadeToResult = addNumberDependingOnDecade(addDayToResult, jahr);
int istSchaltjahr = schaltjahr(jahr, monat, addDecadeToResult);
int modolo7 = modolo7(istSchaltjahr, tag, monat, jahr);
}
public static int addGZAnteilEinesViertels(int jahr) {
String jahrS = Integer.toString(jahr);
int lastTwoOfJahr = Integer.valueOf(jahrS.substring(jahrS.length()-2));
int ganzzahligerAnteilEinesViertels = lastTwoOfJahr + lastTwoOfJahr/4;
//System.out.println(ganzzahligerAnteilEinesViertels);
return ganzzahligerAnteilEinesViertels;
}
public static int addNumberDependingOnMonth(int monat, int ganzzahligerAnteilEinesViertels, int jahr) {
int addMonthNumber = 0;
if(monat == 1||monat == 10) {
addMonthNumber = 1+ganzzahligerAnteilEinesViertels;
}else if(monat == 2||monat == 3||monat == 11) {
addMonthNumber = 4+ganzzahligerAnteilEinesViertels;
}else if(monat == 4||monat == 7) {
addMonthNumber = 0+ganzzahligerAnteilEinesViertels;
}else if(monat == 5) {
addMonthNumber = 2+ganzzahligerAnteilEinesViertels;
}else if(monat == 6) {
addMonthNumber = 5+ganzzahligerAnteilEinesViertels;
}else if(monat == 8) {
addMonthNumber = 3+ganzzahligerAnteilEinesViertels;
}else if(monat == 9||monat == 12) {
addMonthNumber = 6+ganzzahligerAnteilEinesViertels;
}
//System.out.println(addMonthNumber);
return addMonthNumber;
}
public static int addDay(int addMonthNumber, int tag) {
int addDayToResult = tag + addMonthNumber;
//System.out.println(addDayToResult);
return addDayToResult;
}
public static int addNumberDependingOnDecade(int addDayToResult, int jahr) {
int addDecadeToResult = 0;
String jahrS = Integer.toString(jahr);
int lastTwoOfJahr = Integer.valueOf(jahrS.substring(jahrS.length()-2));
if(lastTwoOfJahr == 18) {
addDecadeToResult = addDayToResult+2;
}else if(lastTwoOfJahr == 19) {
addDecadeToResult = addDayToResult;
}else if(lastTwoOfJahr == 20) {
addDecadeToResult = addDayToResult+6;
}else if(lastTwoOfJahr == 21) {
addDecadeToResult = addDayToResult+4;
}
//System.out.println(addDecadeToResult);
return addDecadeToResult;
}
public static int schaltjahr(int jahr, int monat, int addDecadeToResult) {
boolean schaltjahr = false;
int istSchaltjahr = 0;
if(jahr%4 == 0 && jahr%100 !=0) {
schaltjahr = true;
}else if(jahr%4 == 0 && jahr%100 == 0) {
schaltjahr = false;
}else if(jahr%4 == 0 && jahr%100 == 0 && jahr%400 == 0) {
schaltjahr = true;
}
if(schaltjahr && monat == 1|| monat == 2) {
istSchaltjahr = addDecadeToResult-1;
}else if(schaltjahr == false){
istSchaltjahr = addDecadeToResult;
}
//System.out.println(istSchaltjahr);
return istSchaltjahr;
}
public static int modolo7(int istSchaltjahr, int tag, int monat, int jahr) {
int Sa = 0;
int So = 1;
int Mo = 2;
int Di = 3;
int Mi = 4;
int Do = 5;
int Fr = 6;
int[] day = {Sa, So, Mo, Di, Mi, Do, Fr};
int modolo7 = istSchaltjahr%7;
//System.out.println(modolo7);
if(modolo7 == Sa) {
System.out.println("Sa");
}else if(modolo7 == So) {
System.out.println("So");
}else if(modolo7 == Mo) {
System.out.println("Mo");
}else if(modolo7 == Di) {
System.out.println("Di");
}else if(modolo7 == Mi) {
System.out.println("Mi");
}else if(modolo7 == Do) {
System.out.println("Do");
}else if(modolo7 == Fr) {
System.out.println("Fr");
}
System.out.println("Datum: "+tag+"."+monat+"."+jahr);
return modolo7;
}
}