2016-08-01 12 views
0

文字列をdouble型に変換しようとすると、NumberFormatExceptionが発生します。私はそれを行う正しい方法を持っているようだが、例外はまだ表示されます。先週、私が試してきたように、本当に私は怒ってしまった。ここで私がやろうとしているものです:DoubleParseを使用して文字列をdouble型に変換できません

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(); 
      } 
     } 
    } 

}}

私は成功したファイルから数値を取得しています。国[2]を印刷すると、このインデックスに格納されている値が表示されます。

+3

'Double.parseDouble(country [2] .trim())'を試してください。 –

+5

解析しようとしている値、おそらくファイル内の行を表示できますか?ジョーンは正に正しいかもしれません。空白があれば例外がスローされます。 –

+1

Offtopic:try-with-resourceの構文を使用することをお勧めします。 –

答えて

2

私は、このファイルhttps://raw.githubusercontent.com/alecthomas/geoip/master/GeoIPCountryWhois.csv を見つける(それはあなたの作業ファイルに似ていた場合)、それから、この2行でそれをテストします。

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

とエラー作品

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) 

私のコードでした:

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(); 
       } 
      } 
     } 
    } 

} 
関連する問題