从csv文件读取会给出NumberFormatException吗?

时间:2015-02-19 08:11:43

标签: java csv numberformatexception

我正在从csv文件中读取数据并将所有数据设置为一个对象。特定点我得到一个数字格式异常(仅在读取一些数据之后)因为某些数据不是数字(这是文件中的一个错误) charecter数据代替数值数据,由于与主程序的某些集成问题而无法使用字符串概念)。在这一点上我需要跳过该行并需要移动到nextline。任何人都可以帮助。任何帮助将是高度赞赏。

reader = new CSVReader(new FileReader(parentPath+File.separator+file),',','"');
while ((nextLine = reader.readNext()) != null &&nextLine.length!=0 ) {
    encap.setPrice((nextLine[5]));
    String mrp=encap.getPrice().split("[,]")[0];
    try {
        encap.setProduct_price(Double.parseDouble(mrp));
    } catch (NumberFormatException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

注意:当特定行发生numberformat异常时,我需要跳过并阅读下一行。(值正确但我的程序在发生数字格式异常时停止.......

encap是我班级的对象......

2 个答案:

答案 0 :(得分:0)

扩大try catch的范围。蛮力,把尝试放在下面,然后包括所有代码,同时阻止在try块中。

答案 1 :(得分:0)

您的try..catch似乎已经在正确的位置。只需为每条记录创建一个新的encap,它应该按照您的意愿运行:

List<Encap> encaps = new ArrayList<Encap>(); // <- create list of results

reader = new CSVReader(new FileReader(parentPath+File.separator+file),',','"');
while ((nextLine = reader.readNext()) != null &&nextLine.length!=0 ) {

    Encap encap = new Encap(); // <- create a new instance for this line

    encap.setPrice(nextLine[5]);
    String mrp=encap.getPrice().split("[,]")[0];
    try {
        encap.setProduct_price(Double.parseDouble(mrp));

        encaps.add(encap); // <- add this result to the list only if parsed ok

    } catch (NumberFormatException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}