Hi, ich habe vor kurzem angefangen Wirtschaftsinformatik zu studieren und muss die ersten Programme für die Uni schreiben, ich habe gar keine Programmiererfahrung und unser Dozent setzt leider sehr viel Wissen vorraus. Wir sollen ein Programm im Java schreiben, welches 2 Daten vergleicht (Nur Daten bei denen die Regel gilt, wenn durch 4 teilbar = Schaltjahr).
Ich habe mir deswegen mein Anfängerwissen zusammengegoogelt und mit einem Freund getüftelt. Inzwischen bin ich auf Folgenden Code gekommen:
Ich weiß das dieser Code wahrscheinlich extrem umständlich ist und man das Problem bestimmt viel einfacher lösen könnte, aber durch meine mangelnden Erfahrungen in Sachen Programmieren ist das das beste, was mir eingefallen ist.
Dadrinnen befinden sich definitv Denkfehler, denn das Ergebnis weicht immer ein paar Tage vom tatsächlichen Ergebnis ab, kann mir jemand helfen?
Ps.: Uns ist leider nicht erlaubt iwelche Kalender-Funktionen oder ähnliches zu importieren. Unser Dozent meinte er kann die Berechnung in der Musterlösung in nur 6 Zeilen Code tätigen... für mich nicht nachvollziebahr.
Danke!!!
Ich habe mir deswegen mein Anfängerwissen zusammengegoogelt und mit einem Freund getüftelt. Inzwischen bin ich auf Folgenden Code gekommen:
Code:
import java.util.Scanner;
public class Tage {
public static void main(String[] args) {
int tag1, tag2, monat1, monat2, jahr1, jahr2, i, a, z. copy;
Scanner scan = new Scanner(System.in);
System.out.println("Geben Sie das erste Datum ein:");
tag1 = scan.nextInt();
monat1 = scan.nextInt();
jahr1 = scan.nextInt();
System.out.println("Geben Sie das zweite Datum ein:");
tag2 = scan.nextInt();
monat2 = scan.nextInt();
jahr2 = scan.nextInt();
copy = jahr2;
i = jahr2-jahr1;
z = 0;
while (i > 0) {
a = jahr2 % 4;
if (a !=0) {
z = z+365;
} else {
z = z+366;
}
i = i-1;
jahr2 = jahr2-1;
} //while
i = monat2;
if (i == 12) {
z = z+365;
}else if (i == 11) {
z = z+334;
}else if (i == 10) {
z = z+304;
}else if (i == 9) {
z = z+31+28+31+30+31+30+31+31+30;
}else if (i == 8) {
z = z+31+28+31+30+31+30+31+31;
}else if (i == 7) {
z = z+31+28+31+30+31+30+31;
}else if (i == 6) {
z = z+31+28+31+30+31+30;
}else if (i == 5) {
z = z+31+28+31+30+31;
}else if (i == 4) {
z = z+31+28+31+30;
}else if (i == 3) {
z = z+31+28+31;
}else if (i == 2) {
z = z+31+28;
}else if (i == 1) {
z = z+31;
}
if ( monat2 > 2 && copy%4 == 0) {
z = z+1;
}
i = monat1;
if (i == 12) {
z = z-365;
}else if (i == 11) {
z = z-334;
}else if (i == 10) {
z = z-304;
}else if (i == 9) {
z = z-(31+28+31+30+31+30+31+31+30);
}else if (i == 8) {
z = z-(31+28+31+30+31+30+31+31);
}else if (i == 7) {
z = z-(31+28+31+30+31+30+31);
}else if (i == 6) {
z = z-(31+28+31+30+31+30);
}else if (i == 5) {
z = z-(31+28+31+30+31);
}else if (i == 4) {
z = z-(31+28+31+30);
}else if (i == 3) {
z = z-(31+28+31);
}else if (i == 2) {
z = z-(31+28);
}else if (i == 1) {
z = z-31;
}
if ( monat1 > 2 && jahr1%4 == 0) {
z = z-1;
}
i = tag2 - tag1;
z = z+i;
System.out.println("Tage: " +z);
} //public
} //class
Ich weiß das dieser Code wahrscheinlich extrem umständlich ist und man das Problem bestimmt viel einfacher lösen könnte, aber durch meine mangelnden Erfahrungen in Sachen Programmieren ist das das beste, was mir eingefallen ist.
Dadrinnen befinden sich definitv Denkfehler, denn das Ergebnis weicht immer ein paar Tage vom tatsächlichen Ergebnis ab, kann mir jemand helfen?
Ps.: Uns ist leider nicht erlaubt iwelche Kalender-Funktionen oder ähnliches zu importieren. Unser Dozent meinte er kann die Berechnung in der Musterlösung in nur 6 Zeilen Code tätigen... für mich nicht nachvollziebahr.
Danke!!!