[英]java - Exception in thread “main” java.lang.NumberFormatException: For input string: “” at
[英]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.