线程 "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 的奇怪原因。希望它能帮助其他人遇到同样的问题。