线程 "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 的奇怪原因。希望它能帮助其他人遇到同样的问题。
我正在将字符串解析为 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 的奇怪原因。希望它能帮助其他人遇到同样的问题。