Announcement

Collapse
No announcement yet.

java.lang.String cannot be cast to java.lang.Float

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • java.lang.String cannot be cast to java.lang.Float

    Hallo,

    ich lese aus einem Table ein Object aus, dieses möchte ich zur Berechnung in float umwandeln.

    Code:
    float preis = 0;
    for (...) {
       preis += (Float)table.get("preis");
    }
    Er geht durch die forSchleife durch, aber in der Zeile preis... bekomme ich dann leider :

    java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Float

  • #2
    Schon mal in die Doku geschaut? Klasse Float -> Methode valueOf
    Christian

    Comment


    • #3
      Leicht vergesslich?

      Comment


      • #4
        Habe das schon so probiert:
        preis += Float.valueOf((String)table.get("preis"));

        leider : java.lang.ClassCastException: java.lang.Float cannot be cast to java.lang.String

        Comment


        • #5
          Ja, der gleiche Fehler wie vorher ein casten wo es nicht möglich ist
          Christian

          Comment


          • #6
            Okay, also kein Casten:

            preis += Float.valueOf(table.get("preis"));

            Und was muss ich jetzt noch tun? Jetzt sagt er : The method valueOf(String) in the type Float is not applicable for the arguments (Object)

            Comment


            • #7
              Was liefert den table.get....
              Christian

              Comment


              • #8
                Ich bekomme ein Object zurück

                Comment


                • #9
                  Ein Object in ein Float geht mit casten:
                  Float f = 5.1f;
                  Object o = f;
                  Float f1 = (Float) o;
                  System.out.println(f1);

                  Meinte allerdings, was steht aktuell für ein Wert in table.getPreis.

                  Ein String in ein Float mit der Methode
                  Christian

                  Comment


                  • #10
                    in table.getPreis. steht sowas wie 1.34

                    Comment


                    • #11
                      Wenn lt. Beitrag #1 bekomst du einen String;lt. Beitrag #4 ein Float; lt. Beitrag #6 ein Object. Da kann was nicht stimmen. Von welcher Klasse ist Table. Debugge, was wirklich in den Rückgaben drin steht. Ggf. stehen noch zusätzliche Leerzeichen drin
                      double f1 = (Double) o; ist zu probieren
                      Zuletzt editiert von Christian Marquardt; 16.08.2013, 15:33.
                      Christian

                      Comment


                      • #12
                        GGf. erstelle ein ablauffähiges Beispiel mit dem Fehler und poste den Code hier
                        Christian

                        Comment


                        • #13
                          Ich versuche es nochmal von vorne...

                          Code:
                          public Object get(String key)
                          	{
                          		return table.get(key);
                          	}
                          
                          Object test = table.get("preis");
                          gibt ein Object zurück. Da steht aktuell gerade der Wert "20.04" drin. (hab debuggt)

                          da ich mit diesem Wert rechnen will, muss ich ihn ja umformen in z.B. float.

                          Ich versuche zu casten: float test = (Float) table.get("preis");

                          und erhalte folgende Meldung:

                          java.lang.String cannot be cast to java.lang.Float

                          Jetzt frage ich mich natürlich wo er String herkommt?

                          Comment


                          • #14
                            Object ist die Grundklasse aller Objekte. Somit lässt sich jedes Objekt in "Object" packen. In deinem obigen Beispiel wird wohl ein String drin sein, den du nur in ein Object packst. Deswegen ist es immer noch ein String Der Debugger zeigt dir an, was für ein Obecttyp das wirklich ist
                            Christian

                            Comment


                            • #15
                              Habe jetzt in den Table geschaut dort steht an entsprechender Stelle beim Debuggen value : Float (20.04)

                              Comment

                              Working...
                              X