Erklärung Kalenderwoche

ddamon

Mitglied
Hallo alle zusammen :)

und zwar hätte ich eine bitte bzw. frage zu folgenden Code:

Code:
 int tage = 0;
      
      switch(month)
      {
      case 12:
      	tage += 30;
      case 11:
      	tage += 31;
      case 9:
      	tage += 31;
      case 8:
      	tage += 31;
      case 7:
      	tage += 30;
      case 6:
      	tage += 31;
      case 5:
      	tage += 30;
      case 4:
      	tage += 31;
      case 3:
      	tage += 28;
      case 2:
          tage += 31;
      case 1:
          tage += date;
      }
     
      int kw = tage % 7 < 3 ? tage/7 : (tage-1)/7+1 ;

Die switch-Anweisung verstehe ich an sich schon, aber normalerweiße setzt man ja nach jedem case ein break.
Hier ist es nicht der Fall und ist auch wichtig für die Ausführung, da sie mit break nicht mehr richtig funktionieren würde.
Leider versteh ich die funktionisweise dieses Algorithmuses nicht ganz, könnte mir die bitte jemand erklären (so das es ein ein Dummie versteht xD) :))

Danke schonmal!!

gruß
ddamon
 
N

nillehammer

Gast
Das ist ein sog. fall-through (Durchfall ;)). D.h. der case-Block, in den er reingeht wird als erstes ausgeführt. Alle anderen, die im Code dahinterstehen werden auch ausgeführt. Klärt das die Frage? Oder sind dir evtl noch best. Operatoren nicht klar.
 

ddamon

Mitglied
vielen dank schonmal :)

das was aber für mich wirklich nicht klar ist, ist wie sich das ganze mit der Formel unten verhält.
Also wenn ich z.B.
date = 14
month = 11
setze und am Schluss die KW 46 (glaub ich) ausgegeben wird.
Also wie das Programm vom Ablauf funktioniert^^ Wenns nicht klar ist, versuche ich es gerne das Problem noch ausführlicher zu erklären :)

Danke!
 

ddamon

Mitglied
Noch eine kurze Ergänzung, falls es nicht klar ist.

Ich weil einfach nur wissen was das System mit den Zahlen dann macht.
Geb ich z.B. 11 ein wird der case 11 verwendet und ab case 11 alle darunterliegenden fälle (einschließlich case 11) ausgeben.

also:
31
31
31
30
...

werden die Zahlen dann vom System addiert oder was macht das System dann mit den Zahlen um es in der kw-Formel unten einzusetzen? Ich hoffe so versteht mans^^

danke!!

gruß
 
Ja, die Werte eines jeden vorherigen Monats (jene, die im switch darunter stehen) werden zur Variablen tage hinzuaddiert. Die Formel darunter rechnet dann die KW aus.

Im Übrigen hat in diesem Snippet der November 31 Tage und der Dezember nur 30! Schaut falsch aus ;)

Grüße!
 
Auch wenn man die Jahresgrenze außer Acht lässt könnten doch aber nie 3 Monate in Folge 31 Tage haben oder? oO Meiner Meinung nach muss da irgendwo der Wurm drin sein!

Grüße
 

ddamon

Mitglied
vielen dank jap da ist ein wurm drin, so sollts stimmen^^
Code:
      switch(month)
      {
      case 12:
      	tage += 30;
      case 11:
      	tage += 31;
      case 10:
      	tage += 30;
      case 9:
      	tage += 31;
      case 8:
      	tage += 31;
      case 7:
      	tage += 30;
      case 6:
      	tage += 31;
      case 5:
      	tage += 30;
      case 4:
      	tage += 31;
      case 3:
      	tage += 28;
      case 2:
          tage += 31;
      case 1:
          tage += date;
      }
     
      int kw = tage % 7 < 3 ? tage/7 : (tage-1)/7+1 ;

jetzt hab ich das mal mit dem 14.11. probiert, also bei case alles zussamengezählt bis case 1,
dann kommt 318 raus.

die dann unten eingesetzt 318 % 7 = 3 und 3 < 3 ist falsch, also gilt dann die zweite Bedingung, was eingesetzt dann
(318-1)/8 wäre. Rechne ich das aus komm ich aber nicht auf die KW 46, was macht also das Programm anders als ich, dass es auf KW 46 kommt?
 
T

Trolllllll

Gast
int kw = tage % 7 < 3 ? tage/7 : (tage-1)/7+1 ;

bei tage = 318
ist wie du richtig sagst % 7 = 3
somit wird nicht der true Teil also 318 / 7 gerechnet sondern der Fals Teil
(318-1)/7+1
=317/7+1
=45,...+1
=46,...
da int = ohne ",..."
 

ddamon

Mitglied
omg, jetzt darf ich mich schämen...
das ich nicht mal mehr auf die matheregeln achte ist schon bitter -_-
alles klar damit hat sich das wohl erledigt, danke für den kleinen hinweis...
 
P

pappawinni

Gast
Fast schön, nur ...
Im Grunde ist es doch so, dass die erste Kalenderwoche diejenige ist, die den ersten Donnerstag des Jahres enthält.
D.h. Wenn das Jahr mit einem Freitag anfängt, dann zählt der wie auch der Rest dieser Woche noch zur letzten Woche des Vorjahres.
Ist der erste Tag des Jahres bereits ein Donnerstag, dann zählen auch die letzten Tage des Vorjahres schon zur KW1.
2012 zählt z.B. Silvester schon zur KW1 von 2013.
Was die gezeigte Berechnung tut, kann ich leider nicht nachvollziehen.
Irgendwo scheint mir ein Monat verloren gegangen zu sein, Schaltjahre gibt es scheinbar nicht und was da mit "date" gerechnet wird, erschliesst sich mir auch nicht wirklich.
[EDIT]
"date" ist vermutlich der Tag des Monats. Dann kann das für bestimmte Jahre schon passen.
[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
JaZuDemNo Code Erklärung Java Basics - Anfänger-Themen 3
M Erklärung von Ausnahmebehandlung in Methoden Java Basics - Anfänger-Themen 13
S Erklärung BufferedReader und InputStreamReader Java Basics - Anfänger-Themen 4
S Erklärung zur Methode und array Java Basics - Anfänger-Themen 12
I Array in umgekehrter Reihenfolge - Erklärung - Java Basics - Anfänger-Themen 3
KogoroMori21 Erklärung zum Ternären Operator Java Basics - Anfänger-Themen 4
I Erklärung zum Java Code Java Basics - Anfänger-Themen 2
D Erklärung Java Basics - Anfänger-Themen 3
A Erklärung Programm zur Kreisberechnung Java Basics - Anfänger-Themen 43
S Bitweise Operatoren" >>>",">>","<<" erklärung Java Basics - Anfänger-Themen 5
D Erklärung eines Satzes Java Basics - Anfänger-Themen 0
M Erklärung: Int IndexOf (String s) Java Basics - Anfänger-Themen 3
C Methoden erklärung Java Basics - Anfänger-Themen 8
W FileReader - Bitte um Erklärung Java Basics - Anfänger-Themen 7
E Erste Schritte Gute Erklärung zu Objekten / Klassen / Methoden / Sichtbarkeiten auf Deutsch Java Basics - Anfänger-Themen 3
D Erklärung static boolean Java Basics - Anfänger-Themen 6
J Bitte um Erklärung Java Basics - Anfänger-Themen 4
C Polymorphie - Erklärung bitte Java Basics - Anfänger-Themen 5
O Über Map laufen Erklärung Java Basics - Anfänger-Themen 4
H Primzahltest : Erklärung zum Code Java Basics - Anfänger-Themen 2
M Erklärung Code Mergesort Bitte Java Basics - Anfänger-Themen 3
N While Schleife Erklärung Bitte Java Basics - Anfänger-Themen 3
B Benötige Erklärung für Lösungsansatz Java Basics - Anfänger-Themen 0
M web.xml Abschnitt Erklärung Java Basics - Anfänger-Themen 2
Z Fibonacci rekursiv meine Erklärung stimmt so? Java Basics - Anfänger-Themen 2
A erklärung von code Java Basics - Anfänger-Themen 4
A DezimalZuBinär - Erklärung der Vorgehensweise des Programms Java Basics - Anfänger-Themen 4
Z Fibonacci Array Erklärung Java Basics - Anfänger-Themen 5
K Erste Schritte Datenbank SQL erklärung Java Basics - Anfänger-Themen 15
H Methoden Bitte um Erklärung der askString-Methode Java Basics - Anfänger-Themen 15
G Erklärung .next Java Basics - Anfänger-Themen 4
T Erklärung zur Methode, Modulator Java Basics - Anfänger-Themen 3
V Objekte/Klassen erstellen - Erklärung anhand Beispiel Java Basics - Anfänger-Themen 4
P Methoden Erklärung wie ich eine spezielle Methode richtig anwende Java Basics - Anfänger-Themen 9
S Threads Erklärung ReentrantLock Java Basics - Anfänger-Themen 6
B Kleine Erklärung zu einer Codezeile benötigt Java Basics - Anfänger-Themen 5
G Bitte um Erklärung dieser einer Zeile Java Basics - Anfänger-Themen 5
R Interpretation/Erklärung main Java Basics - Anfänger-Themen 4
Helgon Polymorphie Generischer Methodenkopf - Erklärung Java Basics - Anfänger-Themen 3
W OOP Konstruktoren Erklärung Java Basics - Anfänger-Themen 14
E Quellcode Erklärung Java Basics - Anfänger-Themen 8
R Vererbung Bitte um Erklärung - Instanzvariablen Java Basics - Anfänger-Themen 8
A Java Erklärung? Java Basics - Anfänger-Themen 4
D Beans Erklärung Java Basics - Anfänger-Themen 11
Q Klausur aufgabe Erklärung Java Basics - Anfänger-Themen 12
G Bitte um Erklärung Java Basics - Anfänger-Themen 9
O Erklärung für Pattern Java Basics - Anfänger-Themen 5
K gute erklärung Java Basics - Anfänger-Themen 5
Screen Erklärung von der Umwandlung von .class in .jar o. .exe ! Java Basics - Anfänger-Themen 5
Spin Taschenrechner - Erklärung Java Basics - Anfänger-Themen 9
S Code-Erklärung Java Basics - Anfänger-Themen 4
J Bitte um Erklärung für einen Java-Ausdruck Java Basics - Anfänger-Themen 8
M enhanced for - erklärung Java Basics - Anfänger-Themen 3
K Erklärung der Syntax Java Basics - Anfänger-Themen 6
R Erklärung bitte Java Basics - Anfänger-Themen 3
G Erklärung for-Schleife bei Strings Java Basics - Anfänger-Themen 4
tobiasbeil Fehler array initialisierung. Nur erklärung bitte. Java Basics - Anfänger-Themen 2
W Programm erklärung Java Basics - Anfänger-Themen 7
F Threads - Erklärung und Beispielprogramm Java Basics - Anfänger-Themen 4
D Erklärung für eine Abfrage. Java Basics - Anfänger-Themen 9
D Eine Erklärung für eine 3D-Schleife bitte. :) Java Basics - Anfänger-Themen 4
B [suche erklärung] - sicherheit beim login Java Basics - Anfänger-Themen 3
T Problem mit erster Kalenderwoche Java Basics - Anfänger-Themen 27
G Sekunden bis zum Ende der aktuellen Kalenderwoche ermitteln! Java Basics - Anfänger-Themen 3
N GregorianCalendar Kalenderwoche in SimpelDateFormat auf 2 Systemen verschieden Java Basics - Anfänger-Themen 8
J Datum in Kalenderwoche umrechnen Java Basics - Anfänger-Themen 3
R Ermittlung Anfangs- und Enddatum einer Kalenderwoche Java Basics - Anfänger-Themen 10
J erhalte falsche Kalenderwoche - wo ist der Fehler? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben