繁体   English   中英

线程“main”中的异常 java.lang.NumberFormatException:对于输入字符串:“0.353”

[英]Exception in thread “main” java.lang.NumberFormatException: For input string: “0.353”

我正在将字符串解析为 Java 中的浮点数。

但它抛出了这个异常。 我对这个问题很困惑,因为“0.353”显然是一个应该由 parseFloat() 方法解析的数字。

我错过了什么? 感谢你的帮助!

            String FitMappath = PathofFile.path+"FitnessMap.txt";
            FileInputStream in = new FileInputStream(FitMappath);
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            //Read File Line By Line
            String line;

            while ((line = br.readLine()) != null) {
                String[] parts = line.split("\\s+");            //Split into three elements
                float fitness = Float.parseFloat(parts[2]);// String to float
            }
Exception in thread "main" java.lang.NumberFormatException: For input string: "0.353"
    at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054)
    at java.base/jdk.internal.math.FloatingDecimal.parseFloat(FloatingDecimal.java:110)
    at java.base/java.lang.Float.parseFloat(Float.java:549)
    at DelFitnessCalculation.<init>(DelFitnessCalculation.java:66)
    at Main.main(Main.java:49)

我的输入文件的前三行:

Q0085   ATP6    0.353
YDR034C-A   YDR034C-A   0.359
tORF13  tORF13  0.360

当我做System.out.println(Float.parseFloat("0.353")); ,它将0.353打印为浮点数,因此它一定是您的拆分有问题,或者某处可能存在隐藏字符。

您能否尝试提供整个代码片段以希望我们能够更好地回答?

放置这个:

System.out.println("parts[2]=" + parts[2]);

在您共享的两行代码之间。 我想你会找到你正在寻找的东西,这就是你的错误的原因。

感谢您的回答。 最终,事实证明是 UTF-16 引起了问题。 我的输入文件原本是一个excel文件,然后我保存为UTF-16 txt,导致了这个问题。 我尝试将输入文件保存为制表符分隔的文本文件,它按预期工作。

这是 NumberFormatException 的一个奇怪原因。 希望它可以帮助其他人遇到同样的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM