2016-03-06 68 views
-3

我需要将文件(* .txt)中的数字(以空格分割)转换为双格式。无法将数字从文件转换为双格式

文件包含双格式数字行,如“3.50 3.51 -3.49 -3.50 -3.51”。但是这段代码抛出ParseException“不可解析的数字:”3.50“”,我不明白为什么会发生这种情况?我试着用Double.parseDouble和.valueOf做同样的事情,但它总是抛出一个异常。

我对异常的原因感兴趣,而不是以另一种方式解决这个任务。有谁能给我解释一下吗?

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 
    Scanner fileI = new Scanner(new File(reader.readLine())); 
    NumberFormat nf = NumberFormat.getInstance(); 

    while(fileI.hasNextLine()) 
    { 
     String[] str = fileI.nextLine().split(" "); 
     for (String it: str) 
     { 
      System.out.println(nf.parse(it).doubleValue()); 
     } 
    } 
    fileI.close(); 
+2

,我没有得到你所描述的错误。你的代码对我来说工作得很好。 –

+0

这很可能是由于您的语言环境 - 有些国家/地区需要逗号作为小数点分隔符。尝试使用['getInstance'](https://docs.oracle.com/javase/7/docs/api/java/text/NumberFormat.html#getInstance(java.util.Locale))的版本,该版本需要[ Locale'](https://docs.oracle.com/javase/7/docs/api/java/util/Locale.html)参数。你可以提供类似'Locale.US'的东西。 – YoYo

回答

0

尝试使用Double.parseDouble(String s)

如果不是你想要的东西,尝试做一些像

for (String it: str) 
{ 
    try{ 
     System.out.println(nf.parse(it).doubleValue()); 
    }catch (ParseException e){ 
     System.out.println("unappeasable number - "+it); 
    } 
} 
+0

谢谢你,你的回答真的很有帮助! –

+0

@铝幻影,但这不是真的是你的问题的答案是吗?请记住,你说你不是“对解决这个任务感兴趣的另一种方式”。如果你不坚持你的枪炮,我认真地感觉不合适的其他用户有类似的答案... – YoYo

+0

@JoD。是的,我仍然不明白为什么它会抛出一个异常(我发现try-catch只发生在第一个数组中)。使用Locale参数不会有帮助,并且与使用逗号相同。我想应该彻底阅读文档。 –

相关问题