我正在从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是我班级的对象......
答案 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();
}
}