Schönen guten Abend liebe Java Community,
ich habe ein kleines Problem mit einem Java-Programm, welches ich in Zusammenhang mit meinem Studium programmieren muss und zwar soll es ein Kalender sein, welcher für das Jahr 2012 gültig ist, soweit so gut.
Dieser Kalender soll 2 Dinge können, zum einen das ganze Jahr 2012 ausgeben und zum anderen, auf Nutzerwunsch, nur einen einzelnen Monat dieses Jahres ausgeben.
Den ersten Teil der Aufgabe hab ich bereits gelöst und der Kalender als Ganzes kann ausgegeben werden, allerdings weiß ich nicht, wie ich die Umsetzung für die Ausgabe nur eines Monats realisieren soll.
Kann ich meinen vorhanden Quelltext irgendwie ergänzen für die Ausgabe nur eines Monats oder muss ich komplett neu herangehen und für jeden einzelnen Monat nochmal einen extra Code schreiben, damit dieser dann per if else z.B. abgefangen wird, je nach Eingabe?
[Java] int year = 2012;
int day = 6;
int week = 52;
for (int k = 1; k <= 12; k++) {
String month = "";
int NumderOfDays = 0;
switch (k) {
case 1:
month = "Januar ";
NumderOfDays = 31;
break;
case 2:
month = "Februar ";
NumderOfDays = 29;
break;
case 3:
month = "März ";
NumderOfDays = 31;
break;
case 4:
month = "April ";
NumderOfDays = 30;
break;
case 5:
month = "Mai ";
NumderOfDays = 31;
break;
case 6:
month = "Juni ";
NumderOfDays = 30;
break;
case 7:
month = "Juli ";
NumderOfDays = 31;
break;
case 8:
month = "August ";
NumderOfDays = 31;
break;
case 9:
month = "September ";
NumderOfDays = 30;
break;
case 10:
month = "Oktober ";
NumderOfDays = 31;
break;
case 11:
month = "November ";
NumderOfDays = 30;
break;
case 12:
month = "Dezember ";
NumderOfDays = 31;
break;
}
System.out.println(month + year);
System.out.println(" KW Mon Tue Wed Thu Fri Sat Sun");
System.out.printf("%3d |", week);
for (int i = 1; i <= day; i++)
System.out.print(" |");
for (int j = 1; j <= NumderOfDays; j++) {
System.out.printf("%3d |", j);
day += 1;
if (day % 7 == 0) {
System.out.println();
if (week == 52) {
week = 1;
System.out.printf("%3d |", week);
} else {
if (day % 7 == 0 && j == NumderOfDays)
week += 1;
else {
week += 1;
System.out.printf("%3d |", week);
}
}
}
}
day %= 7;
System.out.print("\n\n");
}
}
}[/Java]
PS: ich weiß, es ist noch keine Abfrage für den User vorhanden ob er nun nur einen Monat ausgeben will oder das ganze Jahr, nur erschien mir der Eingabe der Abfrage ohne den 2. Teil der Aufgabe bisher etwas überflüssig xD.
Achso bevor ichs vergesse, die Ausgabe sieht dann in etwa wie folgt aus und sollte auch für den 2.Aufgabenteil gleich aussehen.
52 | | | | | | | 1 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
3 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
4 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |
5 | 30 | 31 |
Und noch etwas wichtiges, gegeben sind nur der erste Wochentag des Jahres, das Jahr selbst und die Tage der einzelnen Monate.
Die Berechnung eines Monats würde vllt sogar noch relativ einfach gehen, wenn ich die Tage der vorangegangen Monate addiere und per modulo 7 den ersten Tag eines Monats bestimme.
Beispiel:
März ist gewünscht
Tag1 des Jahres = 7(Sonntag)
Januar = 31Tage
Feb = 29Tage
Tag1 März = (Januar + Feb + Tag1 des Jahres) % 7 = 4 daraus folgt, dass es ein Donnerstag wäre, was ja laut Kalender auch hinhaut
Allerdings hab ich keinen Schimmer wie ich dann die dementsprechende erste Kalenderwoche des Monats herausfinde.
Ich hoffe ich hab nichts vergessen oder aber zu unverständlich beschrieben.
MfG Tyraelx
ich habe ein kleines Problem mit einem Java-Programm, welches ich in Zusammenhang mit meinem Studium programmieren muss und zwar soll es ein Kalender sein, welcher für das Jahr 2012 gültig ist, soweit so gut.
Dieser Kalender soll 2 Dinge können, zum einen das ganze Jahr 2012 ausgeben und zum anderen, auf Nutzerwunsch, nur einen einzelnen Monat dieses Jahres ausgeben.
Den ersten Teil der Aufgabe hab ich bereits gelöst und der Kalender als Ganzes kann ausgegeben werden, allerdings weiß ich nicht, wie ich die Umsetzung für die Ausgabe nur eines Monats realisieren soll.
Kann ich meinen vorhanden Quelltext irgendwie ergänzen für die Ausgabe nur eines Monats oder muss ich komplett neu herangehen und für jeden einzelnen Monat nochmal einen extra Code schreiben, damit dieser dann per if else z.B. abgefangen wird, je nach Eingabe?
[Java] int year = 2012;
int day = 6;
int week = 52;
for (int k = 1; k <= 12; k++) {
String month = "";
int NumderOfDays = 0;
switch (k) {
case 1:
month = "Januar ";
NumderOfDays = 31;
break;
case 2:
month = "Februar ";
NumderOfDays = 29;
break;
case 3:
month = "März ";
NumderOfDays = 31;
break;
case 4:
month = "April ";
NumderOfDays = 30;
break;
case 5:
month = "Mai ";
NumderOfDays = 31;
break;
case 6:
month = "Juni ";
NumderOfDays = 30;
break;
case 7:
month = "Juli ";
NumderOfDays = 31;
break;
case 8:
month = "August ";
NumderOfDays = 31;
break;
case 9:
month = "September ";
NumderOfDays = 30;
break;
case 10:
month = "Oktober ";
NumderOfDays = 31;
break;
case 11:
month = "November ";
NumderOfDays = 30;
break;
case 12:
month = "Dezember ";
NumderOfDays = 31;
break;
}
System.out.println(month + year);
System.out.println(" KW Mon Tue Wed Thu Fri Sat Sun");
System.out.printf("%3d |", week);
for (int i = 1; i <= day; i++)
System.out.print(" |");
for (int j = 1; j <= NumderOfDays; j++) {
System.out.printf("%3d |", j);
day += 1;
if (day % 7 == 0) {
System.out.println();
if (week == 52) {
week = 1;
System.out.printf("%3d |", week);
} else {
if (day % 7 == 0 && j == NumderOfDays)
week += 1;
else {
week += 1;
System.out.printf("%3d |", week);
}
}
}
}
day %= 7;
System.out.print("\n\n");
}
}
}[/Java]
PS: ich weiß, es ist noch keine Abfrage für den User vorhanden ob er nun nur einen Monat ausgeben will oder das ganze Jahr, nur erschien mir der Eingabe der Abfrage ohne den 2. Teil der Aufgabe bisher etwas überflüssig xD.
Achso bevor ichs vergesse, die Ausgabe sieht dann in etwa wie folgt aus und sollte auch für den 2.Aufgabenteil gleich aussehen.
52 | | | | | | | 1 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
3 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
4 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |
5 | 30 | 31 |
Und noch etwas wichtiges, gegeben sind nur der erste Wochentag des Jahres, das Jahr selbst und die Tage der einzelnen Monate.
Die Berechnung eines Monats würde vllt sogar noch relativ einfach gehen, wenn ich die Tage der vorangegangen Monate addiere und per modulo 7 den ersten Tag eines Monats bestimme.
Beispiel:
März ist gewünscht
Tag1 des Jahres = 7(Sonntag)
Januar = 31Tage
Feb = 29Tage
Tag1 März = (Januar + Feb + Tag1 des Jahres) % 7 = 4 daraus folgt, dass es ein Donnerstag wäre, was ja laut Kalender auch hinhaut
Allerdings hab ich keinen Schimmer wie ich dann die dementsprechende erste Kalenderwoche des Monats herausfinde.
Ich hoffe ich hab nichts vergessen oder aber zu unverständlich beschrieben.
MfG Tyraelx