Java Frage!! (Hiiiilfe)

Gast #201092
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
Gast
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
Gast
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ß
Gast
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.
Gast
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!!!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.