Hi
Ich bin absolute Anfängerin in Sachen Programmieren und versuche mir da grad ein wenig anzueignen.
Verzeiht also bitte, dass mein Lösungsansatz nicht ganz so elegant ist...geht mir erstmal darum, zu sehen, dass ich überhaupt was verstehe.
Ich habe versucht ein Programm zu entwerfen, bei dem ich zwei Daten eingebe und mir die Differenz in Tagen ausgegeben wird.
Schaltjahre habe ich mit eingerechnet....damit ich keine Ausnahmen habe (Jahr durch 100 teilbar) bin ich von einer Zeitspanne von 1901 bis 2099 ausgegangen, denn 2000 ist auch durch 400 teilbar, was die Ausnahme, dass es kein Schaltjahr ist, dann wieder aufhebt.
Mein Programm sieht wie folgt aus..ich hoffe, die Kommentare genügen zur Erklärung...kompilieren will einfach nicht funktionieren.
Häufigste Fehlermeldung ist "class, interface or enum expected".
Danke schon mal im voraus
Ich bin absolute Anfängerin in Sachen Programmieren und versuche mir da grad ein wenig anzueignen.
Verzeiht also bitte, dass mein Lösungsansatz nicht ganz so elegant ist...geht mir erstmal darum, zu sehen, dass ich überhaupt was verstehe.
Ich habe versucht ein Programm zu entwerfen, bei dem ich zwei Daten eingebe und mir die Differenz in Tagen ausgegeben wird.
Schaltjahre habe ich mit eingerechnet....damit ich keine Ausnahmen habe (Jahr durch 100 teilbar) bin ich von einer Zeitspanne von 1901 bis 2099 ausgegangen, denn 2000 ist auch durch 400 teilbar, was die Ausnahme, dass es kein Schaltjahr ist, dann wieder aufhebt.
Mein Programm sieht wie folgt aus..ich hoffe, die Kommentare genügen zur Erklärung...kompilieren will einfach nicht funktionieren.
Häufigste Fehlermeldung ist "class, interface or enum expected".
Danke schon mal im voraus
Code:
public class Tage {
public static void main(String[] args) {
int a = Integer.parseInt(args[0]); //Starttag
int b = Integer.parseInt(args[1]); //Startmonat
int c = Integer.parseInt(args[2]); //Startjahr
int d = Integer.parseInt(args[3]); //Endtag
int e = Integer.parseInt(args[4]); //Endmonat
int f = Integer.parseInt(args[5]); //Endjahr
int g = - a ; //Tage --> Starttage werden abgezogen, weil sonst doppelt berechnet mit Addition der Monatstage
int h = c + 1 ; //aktuelles Jahr (für Zwischenjahrberechnung)
if (b == 1) { // Rest des Anfangjahres berechnen, dazu <=, um 'von oben' zu zählen
g = g + 31;
}
if (b <= 2) {
g = g + 28;
if (c % 4 == 0) {
g = g + 1;
}
}
if (b <= 3) {
g = g + 31;
}
if (b <= 4) {
g = g + 30;
}
if (b <= 5) {
g = g + 31;
}
if (b <= 6) {
g = g + 30;
}
if (b <= 7) {
g = g + 31;
}
if (b <= 8) {
g = g + 31;
}
if (b <= 9) {
g = g + 31;
}
if (b <= 10) {
g = g + 30;
}
if (b <= 11) {
g = g + 30;
}
if (b <= 12) {
g = g + 31;
}
for (h < f) { //1Jahr nach Startjahr (, da Tage schon abgearbeitet mit Restberechnung) beginnend, Tage für zwischenliegende Jahre berechnen
h = h + 1;
g = g + 365;
if (h % 4 == 0) {
g = g + 1;
}
}
if (e > 1) { //Tage für Anfang des Endjahres zählen, dazu > für Endmonate (beachte: zb > 3 bedeutet, auch > 1 und > 2 erfüllt --> zählt für alle Monate hoch
g = g + 31;
}
if (e > 2) {
g = g + 28;
if (f % 4 == 0) {
g = g + 1;
}
}
if (e > 3) {
g = g + 31;
}
if (e > 4) {
g = g + 30;
}
if (e > 5) {
g = g + 31;
}
if (e > 6) {
g = g + 30;
}
if (e > 7) {
g = g + 31;
}
if (e > 8) {
g = g + 31;
}
if (e > 9) {
g = g + 30;
}
if (e > 10) {
g = g + 31;
}
if (e > 11) {
g = g + 30;
}
g = g + d; //Tage des letzten Monats aufrechnen (deshalb nicht >=, damit der letzte Monat nicht voll berechnet wird)
if (f >= c) {
System.out.println("Geben Sie das erste Datum ein:\t" + " "
+ (int)a + " " + (int)b + " " + (int)c + " ");
System.out.println("Geben Sie das zweite Datum ein:\t" + " "
+ (int)d + " " + (int)e + " " + (int)f + " ");
System.out.println("Tage: " + " " + (int)g);
}
else {
System.out.println("Das zweite Datum liegt vor dem ersten");
}
}
}
Zuletzt bearbeitet von einem Moderator: