Bitte um Hilfe von Profis.

Heinzi

Mitglied
Hi,

bin neu hier und hab gleich ein Problem. Undzwar hab ich folgende Aufgabenstellung:
Zur jedem Datum, bestehend aus (Tag, Monat, Jahr), muss es möglich sein die Woche und den Wochentag zu berechnen. Die Eingabe vom Tag, Monat, Jahr muss mittels der Tastatur erfolgen und in Integer-Variablen gespeichert werden.

Meine Kalenderwochen sind ständig falsch. Ich denke da an einen Logikfehler. Find den leider nicht. Bitte nicht zu viel erwarten ich lern das gradmal seit einer Woche und bin noch nicht so weit. (Wenn ich das Datum für heute eingebe kommt aus zufall die richtig KW raus also bitte nicht iritieren lassen).

Hier der Code:

package TestatTerminkalender;

import java.util.Scanner;
class Termine
{
private static int day;

private static int day1;
private static int month;
private static int year;
private static int week;

public Termine()
{

switch(month)
{
case 12: day += 31;
case 11: day += 30;
case 10: day += 31;
case 9: day += 30;
case 8: day += 31;
case 7: day += 31;
case 6: day += 30;
case 5: day += 31;
case 4: day += 30;
case 3: day += 31;
case 2: day += 28;
case 1: day += 31;
case 0: day+=day1;
}

week = day%7 < 3 ? day/7 : (day-1)/7+1;

System.out.println(day);
System.out.println("Der " + day1 + "." + month + "." + year + " ist im KW: " + week);



int weekday = 0;
if (year % 4 == 0 && (year % 400 == 0 || year % 100 != 0))
{
System.out.println("ist ein schaltjahr");
}
else
{
weekday+=3;
}

weekday = (day+weekday) % 7;
weekday++;

switch(weekday)
{
case 0: System.out.println("Sonntag");
break;
case 1: System.out.println("Montag");
break;
case 2: System.out.println("Dienstag");
break;
case 3: System.out.println("Mittwoch");
break;
case 4: System.out.println("Donnerstag");
break;
case 5: System.out.println("Freitag");
break;
case 6: System.out.println("Samstag");
break;
}
}

public static void main(String[] args)
{
Scanner read = new Scanner(System.in);

System.out.print("Bitte geben sie den Tag ein: ");
day1 = read.nextInt();
System.out.print("Bitte geben sie den Monat ein: ");
month = read.nextInt();
System.out.print("Bitte gebe sie den Jahr ein: ");
year = read.nextInt();

Termine t = new Termine();
}

}

Werd noch wahnsinnig den muss ich morgen früh abgeben ;🙂noe::bahnhof:

Hab noch die Datei als java im Anhang. Danke jetzt schon für die Antworten.
 

Anhänge

Zuletzt bearbeitet:
Bei der Berechnung von
Code:
day
darfst du die Tage des aktuellen Monats nicht mit hinzurechnen. Der 20. Feb ist z.B. der
Code:
31+20=51
Tag im Jahr und nicht der
Code:
31+28+20=79
.
 
danke dir
ja das hab ich auch gemerkt grad eben aber ich weiß ehrlich nicht wie ich das verändern kann bin noch nicht so weit. ;(;(
 
Bei der Switch Anweisung bei "month" fehlen alle breaks;

btw. kannst du die auch sortieren nach 31 Tagen, 30 Tagen usw. Dann brauchst du nicht alle Monate auflisten.

Und bitte gewöhn dir direkt hier im Forum die
Java:
 Tags an. Danke
 
Bei der Switch Anweisung bei "month" fehlen alle breaks;

btw. kannst du die auch sortieren nach 31 Tagen, 30 Tagen usw. Dann brauchst du nicht alle Monate auflisten.

Und bitte gewöhn dir direkt hier im Forum die
Java:
 Tags an. Danke[/QUOTE]

Nein, da fehlen keine breaks. Er steigt nur ein Level "zu hoch" in den switch ein. Also [code]switch(month-1) { ... }
sollte das Problem bereits beheben.

Edit: Achja, und hier sollte innerhalb des switch natürlich auch schon berücksichtig werden, ob es sich um ein Schaltjahr handelt oder nicht.
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben