Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Gruppenabgabe 1.3f
Hey.
Ich hab ein Problem bei Aufgabe 1.3 f). Und zwar wird bei mir in der Konsole kein Ergebnis ausgegeben (d.h. es steht immer noch 0.0 da), obwohl eine Rechnung vorliegt. Der Computer müsste normarlerweise auch was zurückgeben (bei return steht keine 0). Die Rechnung stimmt auch, hab sie schon mit dem Taschenrechner überprüft. Ich komm einfach nicht drauf woran es liegt.
Kann mir jemand weiterhelfen?
Ein moeglicher Grund, der mir spontan einfaellt: Integer-Division mit 0 als Ergebnis. Wenn du beispielsweise 4/5 rechnest, kommt 0 raus. Achte darauf, dass bei einer Division die Datentypen passen (evtl. casten), falls die Nachkommastellen benoetigt werden.
Ich benutze eine double-Division, wodurch das normal kein Problem sein dürfte.
Richtige Datei? Wenn du Eclipse benutzt, kann es sein, dass eine Kopie im Workspace angelegt wird…
Ja die Datei ist richtig,bei den ganzen anderen außer der g) klappt ja alles. Ich nutze gedit.
Ganz sicher, dass es sich um eine Fließkomma-Division handelt? Es reicht nicht, wenn das Ergebnis in einer Double-Variable gespeichert wird, mindestens ein Operand muss vom Typ Double sein. Lass dir doch mal Zwischenergebnisse ausgeben.
Aus dem Stegreif fällt mir leider auch nicht mehr ein…
Jawoll, das war der Fehler! Vielen vielen Dank!
Jetzt stimmt nur noch bei der 1.3 g) was nicht…ich bekomm da einfach ein falsches Ergebnis raus, obwohl die Rechnung stimmt und ich auch schon alles auf long konvertiert hab,falls die Zahl nicht in einen int reinpasst…
Auch hier: hast du den Cast nach long vor der Multiplikation gemacht? Auch hier muss mindestens einer der Operanden long sein, damit das Zwischenergebnis long ist.
Hast du das erst konvertiert, wenn das Ergebnis nicht reinpasst? Wenn du das nicht vor der Rechnung machst, ist das Zwischenergebnis wahrscheinlich bereits falsch.
Edit: Hmm, zu langsam.
Benutze bitte den Hinweis “Verwenden Sie …”, der in der Aufgabe 1.3 g) gegeben wurde. Dann geht es ganz schnell.
Ich habe die Methode yearsToSeconds verwendet, mein Problem ist jetzt, dass ich außerhalb des int Wertebereichs bin, obwohl ich eig auf long gecastet hab…
Wie groß ist bei dir yearsToSeconds(815)? Wenn es negativ ist, dann kennst du den Fehler.
Rechne gleich mit long. Wenn du castest, schmeisst du ja nur die zusaetzliche Information weg.
Die Zahl von yearsToSeconds(815) liegt außerhalb des integer Bereichs,das ist mir schon klar.
Ja hab ich gemacht,aber der Fehler bleibt trotzdem bestehen.
konntest du den Fehler lösen?
Leider nicht.