Forum: PC-Programmierung Java Frage!! (Hiiiilfe)


von Nina Voelkel (Gast)


Lesenswert?

Hallo,
ich habe ein großes Problem. Ich schreibe gerade eine Semsterarbeit,
aber nun hänge ich fest. Ich habe eine Problem mit einem Integer, bzw.
soll dies einer werden. Sein Wert beträgt z.B. 333 (mm). Dann muss ich
diesen auf cm umrechen also durch 10 teilen, dann hätte ich 33,3 (ist
das noch ein Integer?), dann soll dieser Wert immer auf volle 5er oder
auf eine volle 0 aufgerundet werden. Also hier auf 35. Bei einem Wert
von 35,7 dann z.B. auf 40. Ich hoffe Ihr versteht, was ich meine.
Wäre echt klasse, wenn jemand Hilfe weiß, bin da nicht so begabt.

Vielen Dank!!!
Nina

von Michael (Gast)


Lesenswert?

Hi

Ich glaube, ich verstehe dein Problem.

Lösungsvorschlag:

int convert(int value){
  return (value + 5) / 10
}

Der Methode wird also das Argument "value" (=Wert) übergeben. Es ist
eine Variable vom Typ Integer, also eine Ganzzahl. Zu diesem Wert wird
5 dazugerechnet und das ganze dann durch 10 dividiert. Da es sich um
eine Integer-Division handelt (Da der Dividend ein Integer ist,
interpretiert  Java die Division als Integer-Division.) wird alles
hinter dem Komma einfach abgeschnitten.

Beispiele:

value := 37
value + 5 = 42
42 / 10 = 4

value := 33
value + 5 = 37
37 / 10 = 30

Hoffentlich hat's geholfen ;-)

Gruss

Michael

von Matthias (Gast)


Lesenswert?

Schau mal in die Java-Referenz...

uuund zwar wenn ich mich nicht irre in die java.math.*

Es müsste eine Funktion zum runden existieren.

 java.lang.Object
 |
 +--extended by java.lang.Number
    |
    +--extended by java.math.BigDecimal


http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html

Funktionen: ceil(), floor(), round() und rint().

Hier nochmal was in deutsch
http://www.galileocomputing.de/openbook/javainsel3/javainsel_050001.htm#Rxxjavainsel_050001280RundenvonWerten

Gruß

von Klaus (Gast)


Lesenswert?

Integers sind nur ganze Zahlen, deswegen solltest du floats/doubles
nehmen.

int wert_in_mm = 333;
double wert_in_cm = ((double)wert_in_mm)/10.0;

So bist du auf der sicheren Seite. Wandelst du einen double in int,
werden wie oben gesagt die Nachkommastellen abgeschnitten. Um zu
runden, musst du also vorher 0.5 addieren:

int wert = (int)(wert_in_cm + 0.5);

Immer wenn (int) oder (double) da steht, wird hier eine Typumwandlung
vorgenommen.

von Michael (Gast)


Lesenswert?

@Klaus: Kommt aufs selbe raus.

von Nina Voelkel (Gast)


Lesenswert?

Vielen dank für Eure tatkräftige unterstützung!
Da mangelte es wohl an der mathematischen Vorstellungskraft!

Habe das Projekt nun erfolgreich abgeschlossen.
Vielen Dank an Alle!!!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.