String nach float Konvertieren

MiMa

Top Contributor
Hallo,
das Konvertieren von Integer Zahlen war ja kein Problem. Im Prinzip funktioniert das umwandeln in andere Zahlensysteme gleich.
Probleme habe ich aber das Konvertierne in eine Fließkommazahl.
Ich habe eine String "19.95" und möchte den als Preis in einen float umwandeln.
Jedes mal erhalte ich eine Fehlermeldung, egal ob ich den String in "19.95" oder als "19,95" zur Verfügung gestellt habe??
Ich seh den Fehler nicht. Wäre sehr nett, wenn mir jemand helfen würde.

Java:
       ...
        String zeichenkette ="kart. : EUR 19.95";
        float preis = 0;
        System.out.println("Bezugsbedingung vor der Verarbeitung : " + zeichenkette);
        // Suchmuster für einen Preis aus Zahlen mit Punkt "19.95"
        Pattern suchmuster = Pattern.compile("\\d+.\\d+");
        // Wendet das Suchmuster auf den String an
        Matcher matcher = suchmuster.matcher(zeichenkette);
        if (matcher.find()) {
            zeichenkette = matcher.group();
            zeichenkette = zeichenkette.replace(".", ",");
            System.out.println("Preis nach der Verarbeitung : " + zeichenkette);
            preis = Float.parseFloat(zeichenkette);
        }
     return preis;
} // transformPreis

Bezugsbedingung vor der Verarbeitung : kart. : EUR 19.95
Preis nach der Verarbeitung : 19.95

Bei einem String mit "19.95" erhalte ich foldende Fehlermeldung
Exception in thread "main" java.lang.NumberFormatException: For input string: "2,"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.valueOf(Integer.java:766)
...
Bei einem String mit "19,95" erhalte ich foldende Fehlermeldung
Exception in thread "main" java.lang.NumberFormatException: For input string: "19,95"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
at java.lang.Float.parseFloat(Float.java:451)

Java:
preis = Float.valueOf(zeichenkette);
Habe ich auch versucht, aber gleiche Fehlermeldung wie mit "19.95"

Danke
 
Zuletzt bearbeitet:

Robat

Top Contributor
Dein Fehler ist hier:
Java:
 zeichenkette = zeichenkette.replace(".", ",");

NumberFormatException wird immer dann geworfen, wenn der Paramter von parseFloat ungültig ist.
Indem du den "." durch ein "," ersetzt, wird die Zahl 19.95 zu 19,95 und damit wird dein Paramter ungültig, da nur die form dd.dd gültig ist
 

MiMa

Top Contributor
Die Zeile habe ich eingesetzt als das andere nicht funltioniert hat. Ich wollte damit testen, ob es an dem Dezimaplunkt liegt. In den Büchern habe ich einen Floatwert mal mit Punkt, mal mit Komma gesehen.
 

Robat

Top Contributor
Also wenn ich deine Methode ausführe und die replace methode auskommentiere dann klappt es bei mir mit der Zahl 19.95
Ich kenne ja den anderen Code nicht.
Übrigens - in deinem Codeschnipsel hat zeichenkette (Paramter) kein Datentyp. Sollte aber ein String sein oder?

Mein Code sähe wie folgt aus:
Java:
public static void main(String[] args)
{
    System.out.println("..." + bla("19.95");
}

private static float bla(String z)
{
       float = preis = 0;
   Pattern p = Pattern.compile("\\d+.\\d+");
   Matcher m = p.matcher(z);

   if(m.find())
   {
       z = m.group();
       // z = z.replace(".",",");
      preis = Float.parseFloat(z);
   }
   return preis;
}

Edit: Klappt auch mit "kart. : EUR 19.95"
 

MiMa

Top Contributor
Also ich versteh das nicht???
Ich kann keinen Fehler finden und dennoch funktioniert es bei Dir?
Da ist meine komplette Methode.
Java:
public static float transformBezugsbedingung(String zeichenkette) {
        // Variableninitialisierung
        float preis = 0;
        System.out.println("Bezugsbedingung vor der Verarbeitung : " + zeichenkette);
        // Suchmuster für einen Preis aus Zahlen mit Punkt "24.90"
        Pattern suchmuster = Pattern.compile("\\d+.\\d+");
     
        // Wendet das Suchmuster auf den String an
        Matcher matcher = suchmuster.matcher(zeichenkette);
        if (matcher.find()) {
            zeichenkette = matcher.group();
            System.out.println("Preis nach der Verarbeitung : " + zeichenkette);
            preis = Float.parseFloat(zeichenkette);
        }
        return preis;
    } // transformBezugsbedingung
Der Inhalt der Zeichenkette ist "kart. : EUR 19.95"
Und auch bei mir kommt als Erzeugter String "19.95" heraus.
Soweit funktioniert das ganze schon, nur das um konvertieren in Float macht das Problem.
http://michaelmadej.de/downloads/float.PNG
Als IDE benutze ich Netbeans.
 
Zuletzt bearbeitet:

Robat

Top Contributor
Aber wenn keine Fehlermeldung kommt, dann hast du doch danach ein float Wert am Ende?

Oder bekommst du immer noch eine NumberFormatException?
 

MiMa

Top Contributor
run:
Bezugsbedingung vor der Verarbeitung : kart. : EUR 19.95
Preis nach der Verarbeitung : 19.95
Exception in thread "main" java.lang.NumberFormatException: For input string: "2,"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.valueOf(Integer.java:766)
at de.michaelmadej.parser.DNBmarc21CoHandler.characters(DNBmarc21CoHandler.java:111)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.characters(AbstractSAXParser.java:546)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:463)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1140)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:655)
at de.michaelmadej.parser.DNBmarc21.parseISBN(DNBmarc21.java:58)
at de.michaelmadej.dokumentarten.Buch.pruefeInhalt(Buch.java:1050)
at de.michaelmadej.dateiformate.PDF.erkennePdf(PDF.java:79)
at de.michaelmadej.Indexer.main(Indexer.java:123)
C:\Users\Michael\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 5 seconds)
 

MiMa

Top Contributor
Dort wird die Zeichenkette als Integer Wert zugewiesen. Diese enthält eine Zahl von 1 ...
Java:
Integer auflageId = Integer.valueOf(zeichenkette);
Die wurde bereits geprüft und funktioniert auch.
 

mrBrown

Super-Moderator
Mitarbeiter
Dort wird die Zeichenkette zugewiesen. Diese enthält eine Zahl von 1 ...
Java:
Integer auflageId = Integer.valueOf(zeichenkette);
Die wurde bereits geprüft und funktioniert auch.
In dem Aufruf wird allerdings die Exception geworfen, funktioniert also nicht wie gewünscht...
 

MiMa

Top Contributor
Der Blog dazu ist wie folgt. Hatte bisher damit keinerlei Probleme damit?
Java:
else if ("250".equals(this.bufferNummer)) {
            if ("a".equals(this.bufferCode)) {
                zeichenkette = DNBmarc21.transformAuflage(zeichenkette);
                Integer auflageId = Integer.valueOf(zeichenkette);
                parserBuchObjekt.setAuflageId(auflageId);
                log.info("Auflage ID             : " + zeichenkette);
                log.info("Tag                    : " + bufferNummer);
                log.info("Code                   : " + bufferCode);
            }
 

Robat

Top Contributor
Warum verwendest du hier die WrapperKlasse Integer und nicht den Datentyp int?

Deshalb wird auch die Exception geworfen.
 

mrBrown

Super-Moderator
Mitarbeiter
Setz in der Funktion mal einen Breskpoint oder log mal, zeichenkette enthält ein , und ist deshalb kein integer mehr
 

Robat

Top Contributor
Java:
Integer x = Integer.parseInt(z);

müsste meiner Meinung nach:

Java:
int x = Integer.parseInt(z);
sein
 

JStein52

Top Contributor
Das wirft die gleiche Exception.
Hier passt entweder der Code nicht zu dem Inhalt von Zeichenkette oder der Inhalt von Zeichenkette passt nicht zum Code.
 

MiMa

Top Contributor
Vielen Dank für die vielen Wege, ich denke ich habe das Problem dank Euch lokalisiert.
Die 2 ist die Auflage. Damals (Vor 2 Jahren) habe ich die Klasse geschrieben und gab eine Zahl, hier 2 als String zurück. Dann habe ich vergangene Tage aber eine AuflageID erstellt und wollte den String abschaffen. Also wurde versucht die Rückgabe der Auflage(String), welch eine 2 beinhaltet in die AuflageID (int) hinein zu legen. Das mir das vorher nicth aufgefallen ist, ist seltsam, da ich seit 3 Wochen wieder an dem Programm rumschreibe. Die Klasse Auflage werde ich neu schreiben, da ich wieder mal neue erkentnisse habe.
Ich melde mich aber und gebe bescheid, wenn es wieder funktioniert.
 

mrBrown

Super-Moderator
Mitarbeiter
Wenn die Auflage/AuflageId eine ID und kein numerischer Wert ist, kann man das einfach als String lassen.
Ich gehe mal davon aus, das du mit der Auflage nicht rechnen willst?
 

MiMa

Top Contributor
So es läuft wieder.
In den letzten Stunden hatte ich eine Methode geschrieben um Seitenzahlen aus einen String zu holen.
Java:
public static short transformStringZahl(String zeichenkette) {
        // Variableninitialisierung
        short zahl = 0;
    
        log.info("Zeichekette vor der Verarbeitung : " + zeichenkette);
    
        // Suchmuster um Zahlen zu erkennen
        Pattern suchmuster= Pattern.compile("\\d+");
    
        // Wendet das Suchmuster auf die zu untersuchende Zeichenkette
        Matcher matcher = suchmuster.matcher(zeichenkette);
        if (matcher.find()) {
            zeichenkette = matcher.group();
            log.info("Zeichenkette nach der Verarbeitung : " + zeichenkette);
            zahl = Short.parseShort(zeichenkette);
        }
        return zahl;
    } // transformSeiten
Da bei der Auflage genau das gleiche passiert wollte ich die gleiche Methode verwenden um auch die Auflage zu ermitteln. Also die Methode "transformAuflage" gelöscht und die gleiche Methode angewandt und es fluppt wieder.
Mit Auflage werde ich nicht rechnen, aber es wird als Zahl in die Datenbank geschrieben und entsprechend verknüpft.

Nochmals Vielen Dank an Euch
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
I String nach Wort suchen Java Basics - Anfänger-Themen 6
P Ein Objekt nach einem String durchsuchen? Java Basics - Anfänger-Themen 7
F JMenuItem Kann nicht nach einem String benannt werden... Java Basics - Anfänger-Themen 11
B String nach erstem Leerzeichen trennen Java Basics - Anfänger-Themen 7
G String wird nach Einlesen aus Datei nicht erkannt Java Basics - Anfänger-Themen 3
O String von vorne nach hinten an einem Zeichen Java Basics - Anfänger-Themen 10
B String nach HTML formatieren Java Basics - Anfänger-Themen 9
K String nach bestimmtem Muster parsen Java Basics - Anfänger-Themen 3
M Array nach String durchsuchen und zurückgeben Java Basics - Anfänger-Themen 16
S String trennen nach beliebigen Zeichen Java Basics - Anfänger-Themen 3
B String: suche nach Wörter und in List<String> speichern Java Basics - Anfänger-Themen 3
G String nach Contains/Regex Java Basics - Anfänger-Themen 2
F Wort nach String ausgeben Java Basics - Anfänger-Themen 5
P Input/Output Arraylist nach String eines Objekts durchsuchen Java Basics - Anfänger-Themen 26
F String immer weiter nach Bedarf vergrößern Java Basics - Anfänger-Themen 3
W Array nach String durchsuchen und Ausgeben Java Basics - Anfänger-Themen 8
G Variabel: Nach String benannte Methode ausführen Java Basics - Anfänger-Themen 13
S String nach Größe sortieren Java Basics - Anfänger-Themen 6
F In einem String nach einem String suchen und Zeichen danach ausgeben Java Basics - Anfänger-Themen 6
M String nach Zahlen durchsuchen Java Basics - Anfänger-Themen 21
H Variablen string nach byte Java Basics - Anfänger-Themen 12
B String nach regex überprüfen Java Basics - Anfänger-Themen 6
C String Objekte Vergleich je nach Instanzierung unterschiedlich!!?!! Java Basics - Anfänger-Themen 4
H binärer String nach int convertieren Java Basics - Anfänger-Themen 3
S Von byte[] nach String zurueck nach byte[]. Arrays sind nicht identisch :( Java Basics - Anfänger-Themen 6
L Methoden String.split nach Absätzen? Java Basics - Anfänger-Themen 8
K Klassen String - nach Wort durchsuchen Java Basics - Anfänger-Themen 6
K Int nach String geht nicht Oo Java Basics - Anfänger-Themen 13
D Nach String "{" suchen Java Basics - Anfänger-Themen 4
S String nach Ausdruck durchsuchen und Folgeattribut ausgeben Java Basics - Anfänger-Themen 3
C String array nach File array Java Basics - Anfänger-Themen 15
D Wort nach Leerzeichen - String Java Basics - Anfänger-Themen 10
R Datentypen In String nach String suchen und hinzufügen Java Basics - Anfänger-Themen 2
C Datentypen int[][]-Array nach String[][]-Array konvertieren Java Basics - Anfänger-Themen 7
K StringWriter/String nach InputStream konvertieren Java Basics - Anfänger-Themen 3
L String zuverlässig nach Char parsen? Java Basics - Anfänger-Themen 4
B String Array nach Int Array Java Basics - Anfänger-Themen 3
A String nach bestimmten kriterien splitten Java Basics - Anfänger-Themen 13
E String abscheiden nach letztem Backslash Java Basics - Anfänger-Themen 3
S String nach erstem Whitespace kopieren Java Basics - Anfänger-Themen 3
H String/StringBuffer nach zeilen aufteilen Java Basics - Anfänger-Themen 2
D String nach ABC sortieren Java Basics - Anfänger-Themen 2
B String vom Server nach Position... (erledigt) Java Basics - Anfänger-Themen 6
G String nach int casten Java Basics - Anfänger-Themen 5
I Unstimmigkeit bei String-nach-Double-Konvertierung Java Basics - Anfänger-Themen 7
S Worthäufigkeiten zählen nach String.split() Java Basics - Anfänger-Themen 5
D String mit 2 Stellen nach dem Komma (Dezimalzahl) Java Basics - Anfänger-Themen 9
M Int nach String konvertieren? Java Basics - Anfänger-Themen 11
G String nach Pluszeichen splitten Java Basics - Anfänger-Themen 2
R string nach int[] Java Basics - Anfänger-Themen 4
A String Array: Suche nach Name -> Wert? Java Basics - Anfänger-Themen 3
B nach Zeichen suchen dass im string mehrmals vorkommt Java Basics - Anfänger-Themen 3
S Arrays nach String kovertieren und sortieren Java Basics - Anfänger-Themen 4
M String nach einer bestimmten Anzahl von Zeichen trennen Java Basics - Anfänger-Themen 2
B String nach byte[] Java Basics - Anfänger-Themen 17
H Von String nach Date Java Basics - Anfänger-Themen 2
G String Sortierung nach mehreren Kriterien Java Basics - Anfänger-Themen 4
S String nach Marke im String finden. Java Basics - Anfänger-Themen 7
J nach Muster in String suchen Java Basics - Anfänger-Themen 4
H Konvertieren von String nach int Java Basics - Anfänger-Themen 9
S String nach boolean parsen! Java Basics - Anfänger-Themen 5
M long nach String casten Java Basics - Anfänger-Themen 2
U String nach Integer Casten. Java Basics - Anfänger-Themen 4
N String nach Zeichen ersetzen Java Basics - Anfänger-Themen 6
R String nach Binär-Form Java Basics - Anfänger-Themen 3
K int nach String umwandeln mit führenden Nullen Java Basics - Anfänger-Themen 4
G String: nach 3. Zeichen char ersetzen Java Basics - Anfänger-Themen 3
D Von String nach boolean umwandeln Java Basics - Anfänger-Themen 8
H Object nach String umwandeln Java Basics - Anfänger-Themen 2
B Typumwandlung von int nach String Java Basics - Anfänger-Themen 8
R in einem string nach einer zahl suchen und auslesen...... Java Basics - Anfänger-Themen 3
krgewb String mit Datumsangabe in Long umwandeln Java Basics - Anfänger-Themen 2
D String Groß/Kleinschreibung Ignorieren Java Basics - Anfänger-Themen 4
J Ähnlichen String in Liste finden Java Basics - Anfänger-Themen 6
Kartoffel_1 String transformation Java Basics - Anfänger-Themen 7
H String-Operation replace() - Zeichenkette verdoppeln Java Basics - Anfänger-Themen 2
K String analysieren Java Basics - Anfänger-Themen 27
Beowend String zu Date parsen Java Basics - Anfänger-Themen 1
Beowend String auf Satzzeichen überprüfen? Java Basics - Anfänger-Themen 6
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
I Sass Compiler und String erhalten? Java Basics - Anfänger-Themen 7
Avalon String in Double bzw. Währung konvertieren Java Basics - Anfänger-Themen 6
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
F Arraylist<String>Ein Wort pro Zeile Java Basics - Anfänger-Themen 6
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
N String überprüfen Java Basics - Anfänger-Themen 3
E String zerlegen aus args Java Basics - Anfänger-Themen 1
M Long-Typ in String-Änderung führt zu keinem Ergebnis bei großer Zahl Java Basics - Anfänger-Themen 11
Ostkreuz String Exception Java Basics - Anfänger-Themen 8
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
J String Filter Java Basics - Anfänger-Themen 5
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Größter zusammenhängender Block gleicher Zeichen im String Java Basics - Anfänger-Themen 1
XWing Randomizer mit einem String Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben