簡體   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