java- Zeitumrechner

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Jungs bzw. Mädels, Ihr redet hier einfach aneinander vorbei und um den heißen Brei herum!

  • In der Vorlage werden in m genauso Sekunden abgelegt wie in s, nachdem der Stundenanteil weggeschmissen wurde (%3600). Das zeigt das Vorlage-Programm auch an: 123 Sekunden über 3600 hinaus. Vollkommen korrekt - entsprechend dem, was der Programmierer angefordert hat. Allerdings sollen ja wohl nicht die Sekunden, sondern die Minuten angezeigt werden. Da müssen die Sekunden also durch die 60 Sekunden pro Minute noch dividiert werden. "%" ist KEINE (!) Division, sondern eine REST- (!) -Bildung. Die Doppel-Rest-Division bei den Sekunden "s" ist übrigens Nonsense: ein "%60" ist nur eine "engere" Form von "%3600", und da 3600 auch noch durch 60 teilbar ist, ist das "%3600" überflüssig!

  • In der Entgegnung vom "teudschlerer" wird zwar sinnvoll dividiert, aber erstens nicht mit Ganzzahlen (was auch in der Vorlage nicht konsequent passiert), zweitens nicht abgeschnitten (alias abgerundet). Falls der "teudschlerer" sich die Mühe macht, seine berechneten Werte m und h mal in die Formel für seine s einzusetzen, wird er merken, daß das Stuß ist. Mit Ganzzahlen wäre es was anderes.

==================

Fazit: Macht Variablen, die sowieso von vornherein nur Ganzzahlen tragen sollen, auch tatsächlich zu Ganzzahl-Variablen! Laßt von vornherein mit Ganzzahlen rechnen, dann braucht Ihr nicht erst mühevoll zu runden (und darauf zu achten, daß dann auch tatsächlich AB-gerundet und nicht zum nächstliegenden Wert gerundet wird)!

Und macht Euch nochmal einen gründlichen Kopf über den Unterschied zwischen Quotient und Rest bei einer Division! Das war mal Stoff von irgendwo aus Klasse 3 oder 4 glaube ich, oder?! Ich meine nicht den Operator - den behandelt man in der Schule nicht -, sondern die Division mit Rest!

Der Fehler liegt ganz klar an der Berechnung. Eine Zahl modulo 3600 kann alles zwischen 0 und 3599 ergeben. Ist auch ganz logisch. 500 modulo 3600 ist zum Beispiel 500. Warum nicht einfach so:

m = s / 60;

h = m / 60;

s = s - m x 60 - h x 60

m = m - hx60

lucsyder95 
Fragesteller
 21.11.2012, 18:35

Das funktioniert bei mir nicht. bei Sekunden kommt da eine negative Zahl

0