Ich hab keinen Plan ob ich im richtigen Teil des Forums bin, ich probiers einfach mal:
Mein Problem ist folgendes:
Ich bekomme über den Constructor ne Grad angabe in der Form Grad:Minuten:Sekunden zB:
Java:
newValue(33,21,16);
Das wird umgerechnet in n double: 33 + 21/60 + 16/3600
Soweit vorgegeben.
Jetzt muss ich aber in der toString() diesen double wieder so umrechen das ich sowas in der Art
"33:21:16 N" bekomme (N ist dabei einfach nur ne vorzeichen frage). Habt ihr zu diese Frage Ideen, Vorschläge o.ä.? ich hab das gefühl ich müsst wissen wie s geht, steh aber auf dem schlauch.
lg, jaq
Wo soll das dann in der Form stehen, und was wird verrechnet, wenns so wieder ausgegeben wird? Kannste vllt alles posten, den Konstruktor und die überschriebene toString()?
Ich weiß zwar nicht, inwiefern du was an der internen Repräsentation ändern kannst, aber: double ist auf dem ersten Blick für diese Aufgabe eine ganz, ganz schlechte Wahl:
Es verbraucht mehr Speicher als wahrscheinlich nötig (vorausgesetzt, alle Winkel sind kongruent modulo 360°),
dürfte wesentlich mehr Zeit bei der Berechnung benötigen als reine Ganzzahloperationen und
ist extrem anfällig für Rundungsfehler (wegen des relativ großen Teilers 3600 und dessen Primfaktoren).
Mein Tipp: verwende Festkommazahlen mit Sekundengenauigkeit (oder so genau, wie du es halt brauchst). Das erspart dir den Umgang mit hässlichen Rundungsfehlern (es sei denn natürlich, du willst mit den Winkeln keine Berechnungen anstellen ^^). Hinweise dazu findest du auch in dem verlinkten Thread. Falls du trotzdem double verwenden möchtest (wovon ich dringend abrate), hier ein Ansatz:
Java:
publicstaticfinalStringtoString(double degree){int deg =(int)degree;double t =(degree - deg)*60;int min =(int)t;
t =(t - min)*60;int sec=(int)t;return deg +":"+ min +":"+ sec;}
Dieser Ansatz berücksichtigt keine Vorzeichen etc., dient aber eventuell als Anregung.
wieso machst du das eigentlich nicht in die andere Richtung? In der Klasse speicherst du Grad, Minuten und Sekunden wie durch den Konstruktor übergeben ab und wenn du die Ausgabe in Dezimal brauchst führst du die Rechnung in einer entsprechenden Methode aus. Dazu brauchts sowohl in der besagten als auch in der "toString()"-Methode nur jeweils eine Zeile.