gpt4 book ai didi

java - 想知道我的代码中 NumberFormat 异常背后的原因

转载 作者:太空宇宙 更新时间:2023-11-04 11:31:51 26 4
gpt4 key购买 nike

我正在尝试使用 BufferedReader 读取文件,在分割文件的每一行时,我想将第 8 个位置的字符串数据转换为 float 。(计数从 0 数据开始)

下面是我的代码:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class TestFloat {
static BufferedReader bin;
String line;
void sumAmount() throws IOException //Perform calculation
{

bin = new BufferedReader(new FileReader("D:\\Extras\\file.txt"));
//String firstline = bin.readLine();
while ((line = bin.readLine()) != null)
{
String data[] = line.split(",");
//System.out.println(data[8]);
System.out.println(Float.valueOf(data[8]));
//System.out.println(java.lang.Float.parseFloat(data[8]))
}
}
public static void main(String[] args)
{
TestFloat ts = new TestFloat();
try {
ts.sumAmount();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

对于此代码,我收到如下异常:

Exception in thread "main" java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
at java.lang.Float.parseFloat(Float.java:451)
at java.lang.Float.valueOf(Float.java:416)
at TestFloat.sumAmount(TestFloat.java:17)
at TestFloat.main(TestFloat.java:24)

file.txt 的一个示例行是:

20,20160518,262,20160518,00,F&O ABC DEBIT F 160518,000405107289,000405006220,5000000.00,5000000.00,0.00,, 

我尝试过使用 parseFloat 和 valueOf 这两个函数,但它显示异常。失败的原因是什么?

最佳答案

java.lang.NumberFormatException: empty String

错误表明您正在尝试解析空字符串

一种解决方案是使用 if 语句来防止 NumberFormatException(对于空字符串,也就是说,对于无法解析的字符串,您仍然可以获得 NumberFormatException)。

if(data[8] != null && data[8].length() > 0){
System.out.println(Float.valueOf(data[8]));
System.out.println(java.lang.Float.parseFloat(data[8]));
}

您需要逐步检查调试器,看看其背后的真正问题是什么。

关于java - 想知道我的代码中 NumberFormat 异常背后的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43697312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com