2012-04-01 4 views
1

Ich arbeite an Rating Bar in Android, in dem der Wert von Rating aus dem Web Service abgerufen wird. Die Daten, die ich bekomme, sind in Form von XML wie folgt.NumberFormatException in Parsing String, um für Rating Bar Float?

5,0

Zum Zeitpunkt des Abrufens ich die xml bin Parsen und alle Werte in String zu bekommen. Jetzt konvertiere ich den Wert von String in Float für Ratings, aber zu diesem Zeitpunkt erhalte ich NumberFormatException. Ich weiß nicht warum, ich habe andere Daten von String zu Double analysiert, aber ich habe zu diesem Zeitpunkt keinen Fehler bekommen, aber wenn ich versuche, von String zu Float zu konvertieren, weiß ich nicht, warum es eine Ausnahme auslöst ...

Hier ist mein Beispielcode.

ArrayList<HashMap<String, Object>> mylist = new ArrayList<HashMap<String, Object>>(); 

try { 
//Get the xml string from the server 
xml = XMLFunctions.getXML(url); 
doc = XMLFunctions.XMLfromString(xml); 
nodes = doc.getElementsByTagName("result"); 
for (int i = 0; i < nodes.getLength(); i++) { 
    HashMap<String, Object> map = new HashMap<String, Object>(); 
    Element e = (Element)nodes.item(i); 
    map.put(Constants.NAME, XMLFunctions.getValue(e, "name")); 
    System.out.println("Rating = " + XMLFunctions.getValue(e, "rating")); 
    map.put(Constants.RATING, (Float.parseFloat(XMLFunctions.getValue(e, "rating")))); 
    mylist.add(map); 
} 

noch einmal zu versuchen: -

String ratingValue = XMLFunctions.getValue(e, "rating"); 
System.out.println(ratingValue);// it gives me 5.0 
float myRating = 0.0f; 
myRating = Float.parseFloat(ratingValue); // getting exception here 
System.out.println("Rating = **" + myRating + "**");//it gives me Rating = **5.0** 

Fehlerprotokoll: -

04-01 08:44:59.986: I/System.out(382): Rating = 5.0 
04-01 08:45:00.056: W/System.err(382): java.lang.NumberFormatException: 
04-01 08:45:00.056: W/System.err(382): at org.apache.harmony.luni.util.FloatingPointParser.parseFloat(FloatingPointParser.java:305) 
04-01 08:45:00.065: W/System.err(382): at java.lang.Float.parseFloat(Float.java:323) 
04-01 08:45:00.065: W/System.err(382): at place.locator.PlaceLocatorActivity$ParseXMLData.doInBackground(PlaceLocatorActivity.java:173) 
04-01 08:45:00.065: W/System.err(382): at place.locator.PlaceLocatorActivity$ParseXMLData.doInBackground(PlaceLocatorActivity.java:1) 
04-01 08:45:00.065: W/System.err(382): at android.os.AsyncTask$2.call(AsyncTask.java:185) 
04-01 08:45:00.065: W/System.err(382): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) 
04-01 08:45:00.065: W/System.err(382): at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
04-01 08:45:00.065: W/System.err(382): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 
04-01 08:45:00.065: W/System.err(382): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 
04-01 08:45:00.065: W/System.err(382): at java.lang.Thread.run(Thread.java:1019) 

Ich weiß nicht, wo ich Fehler mache. Wenn irgendjemand es entdecken kann, lass es mich bitte wissen. Ich weiß, es muss ein dummer Fehler sein, aber einige sind nicht in der Lage, es zu erkennen.

Dank

+0

verwenden Wie können wir wissen, dass der Wert von „Bewertung“ ist nicht „Kumquat“? –

+0

Es tut mir leid, aber ich bekomme Ihre Frage nicht? – Prem

+0

was gibt XMLFunctions.getValue (e, "rating") zurück. ich meine String oder irgend etwas anderes – Ishu

Antwort

0

Statt dessen verwenden

XMLFunctions.getValue(e, "rating") 

Mit dieser

XMLFunctions.getValue(e, "rating").trim() 

Erläuterung: Es kann Leerraum in der Zeichenfolge Hinter Sie bekommen. Wenn auch Leerzeichen vorhanden sind, versuchen Sie stattdessen, die Methode replace() zu verwenden. für ex:

XMLFunctions.getValue(e, "rating").replace(" ","") 

Wenn beide Methoden nicht funktionieren, versuchen Sie die Zeichenfolge Drucken Sie Float parsen, zu überprüfen, ob es andere nicht numerisches Zeichen oder nicht ist enthalten.

+0

Ich habe den Wert mit sysout gedruckt und ich glaube nicht, dass es Leerzeichen enthält noch werde ich dies versuchen .... Die erste Zeile im Log-Display die Bewertung, die ich bekomme .... – Prem

+0

Ich meine sagen, versuchen Sie, diese Anweisung zu verwenden Log.d ("Value", XMLFunctions.getValue (e, "Bewertung")); vor der Analyse-Anweisung – noob

+0

Okk ... Und auch nach dem Versuch, trimmen und ersetzen, ich bekam Sysout 2 mal. 1. Mal zeigt es Rating = 5.0 & 2. Mal zeigt es Rating = warum das? Ich habe nur einen Sysout verwendet. zum zweiten Mal zeigt es leer .... – Prem

0

Versuchen Sie den Wert aus der Ausgabe zu einem varaible zurück zuweisen und dann parseFloat

String floatValue = XMLFunctions.getValue(e, "rating"); 

float myValue = 0.0f; 

myValue = Float.parseFloat(floatValue); 
+0

Ich habe dieses schon versucht, aber nicht funktioniert .. Danke für Ihre Antwort ... – Prem

+0

@Prem, versuchen Sie es noch einmal, aber drucken Sie den Wert von 'myValue', umgeben es mit' ** 'Zeichen auf beiden Seiten, so dass Sie sehen alle Leerzeichen, Tabs, etc. –

+0

okkk ... Ich werde es wieder versuchen .. – Prem