kostenloser Webspace werbefrei: lima-city


Datentyp Double im Parameter erzwingen

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    dikay

    dikay hat kostenlosen Webspace.

    Hallo liebe Limaianer,
    als Javaanfänger und nach stundenlanger Googlerecherche habe ich für heute erstmala aufgegeben und poste mein Problem mal hier.

    Ich arbeite mit Bluej (tut nix zur Sache ich schreib es nur damit nicht nach dem ganzen Code gefragt wird und meine SIchtweise verständlich wird.) und habe folgenden Methode:
    public void setX(double newX)
        {
            x = newX;
        }


    Diese rufe ich auf und ich werde durch BlueJ nach einem double newX gefragt. Gebe ich nun für newX 1/2 in das Abfragefenster ein dann bekomme ich als Ergebnis logischerweise für das neue x 0 da ja mit int gerechnet wird und der Rest abgerundet bzw. verworfen wird. Und genau da liegt mein Problem. Ich weis das ich das Problem mit 1.0/2 o.ä. umgehen kann aber ich habe nach einer Lösung gesucht die vom Code her kommt, wie z.B. ein bestimmtes Format erzwingen.

    Ich hoffe ihr könnt mir auf die Sprünge helfen :)

    Danke im vorraus
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Du kannst noch casten:
    1 / (double) 2
    ((double) 1) / 2


    Ich weiß aber nicht, was das bringen sollte.
    1.0 erzwingt bereits das Format double.
  4. Autor dieses Themas

    dikay

    dikay hat kostenlosen Webspace.

    nein in der EIngabe soll ich 1/2 eingeben weder 1.0/2 noch kann ich da einen cast angeben. Genau das ist ja mein Problem.
  5. Mal davon abgesehen, das es nicht gängiger Programmierpraxis entspricht eine Benutzereingabe direkt an einen Setter durchzureichen, wirst du wohl kaum eine andere Möglichkeit haben als das ganze vorher irgendwie zu Parsen oder anderweitig vor zu behandeln.

    Der Datentyp kann zwar auch durch die explizite Angabe des Typs erzwungen werden aber das funktioniert nur als Literal im Quelltext:
    1D/2D

    Du musst also deine Eingabewerte erst entsprechend einlesen und verarbeiten, bevor du einen Double bekommst, sonst wirst du immer mit ints rechnen und das liefert eben wieder einen int als Ergebnis.

    Zum Beispiel könnte man beide Werte getrennt einlesen und dann den Operator auswerten:
    double wert1 = Double.parseDouble("wert1 als String");
    double wert2 = Double.parseDouble("wert2 als String");
    
    if(operator.equals("/")) {
       double ergebnis =  wert1 / wert2
    }
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!