2016-08-01 21 views
0

Ich habe NumberFormatException, wenn ich versuche, eine Zeichenfolge in Double zu konvertieren. Es scheint, dass ich den richtigen Weg habe, es zu tun, aber die Ausnahme immer noch auftaucht. Es hat mich wirklich verrückt gemacht, als ich letzte Woche versucht habe. Hier ist, was ich versuche zu tun:String kann nicht in Double konvertiert werden mit DoubleParse

String csvFile="N:/Downloads/Chrome Downloads/GeoIPCountryWhois.csv"; 
BufferedReader br=null; 
String line=""; 
String cvspl=","; 
    try{ 
     for(int i=0;i<5000;i++) 
     { 
     //System.out.println("I'm here in retriving IP"); 
     br=new BufferedReader(new FileReader(csvFile)); 
     while ((line=br.readLine())!=null){ 
      String[] country=line.split(cvspl); 
      l.add(country[0]); 
      double a = Double.parseDouble(country[2]); 
      double b = Double.parseDouble(country[3]); 
      IpParameters p = new IpParameters(a, b); 
      IP.put(country[0], p); 

     }   
     } 


    }catch(FileNotFoundException e){ 

     e.printStackTrace(); 

    }catch (IOException e){ 
     e.printStackTrace(); 
    }finally{ 
     if (br !=null){ 
      try{ 
       br.close(); 
      }catch (IOException e){ 
       e.printStackTrace(); 
      } 
     } 
    } 

} }

ich erfolgreich die Zahlen aus der Datei abrufen bin. Wenn ich Land [2] ausdrücke, zeigt es den Wert an, der in diesem Index gespeichert wird.

+3

versuchen Sie mit 'Double.parseDouble (country [2] .trim())'. –

+5

Können Sie uns den Wert anzeigen, den Sie analysieren möchten, und vielleicht die Zeile in der Datei? Jorn mag recht haben - wenn es Leerzeichen gibt, würde die Ausnahme ausgelöst werden. –

+1

Offtopic: Ich schlage vor, die Try-mit-Ressource-Syntax zu verwenden. –

Antwort

2

finde ich diese Datei https://raw.githubusercontent.com/alecthomas/geoip/master/GeoIPCountryWhois.csv (wenn es um Ihre Arbeitsdatei ähnlich ist) und testen Sie es mit diesen beiden Linien von ihm:

"1.0.0.0","1.0.0.255","16777216","16777471","AU","Australia" 
"1.0.1.0","1.0.3.255","16777472","16778239","CN","China" 

und Fehler war

Exception in thread "main" java.lang.NumberFormatException: For input string: ""16777216"" 
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043) 
    at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110) 
    at java.lang.Double.parseDouble(Double.java:538) 
    at Test.main(Test.java:22) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 

meinen Code, das funktioniert :

import java.io.BufferedReader; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.StringReader; 

/** 
* Created by mojtab23 on 8/1/16. 
*/ 
public class Test { 
    public static void main(String[] args) { 
     BufferedReader br = null; 
     String line = ""; 
     String cvspl = ","; 
     try { 

      //System.out.println("I'm here in retriving IP"); 
      br = new BufferedReader(new StringReader("\"1.0.0.0\",\"1.0.0.255\",\"16777216\",\"16777471\",\"AU\",\"Australia\"\n" + 
        "\"1.0.1.0\",\"1.0.3.255\",\"16777472\",\"16778239\",\"CN\",\"China\"")); 
      while ((line = br.readLine()) != null) { 
       String[] country = line.split(cvspl); 
//     l.add(country[0]); 
       double a = Double.parseDouble(country[2].replaceAll("\"", "")); 
       double b = Double.parseDouble(country[3].replaceAll("\"", "")); 
//     IpParameters p = new IpParameters(a, b); 
       System.out.println("IP: " + country[0]); 
       System.out.println(a + " ," + b); 


      } 


     } catch (FileNotFoundException e) { 

      e.printStackTrace(); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      if (br != null) { 
       try { 
        br.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 

} 
Verwandte Themen