Java 读取csv文件导致数字格式异常
我正在使用csvwriter写入csv文件,然后调用其方法writeAll。写入后,我正在使用缓冲读取器读取相同的文件,这会导致数字格式异常。如何解决该问题Java 读取csv文件导致数字格式异常,java,file,csv,Java,File,Csv,我正在使用csvwriter写入csv文件,然后调用其方法writeAll。写入后,我正在使用缓冲读取器读取相同的文件,这会导致数字格式异常。如何解决该问题 public static void writeInventoryToUpdate(List<String[]> data)throws IOException { String csv = "E:\\Semester 3\\PointOfSale2\\Inventory.csv"; CSVWriter wri
public static void writeInventoryToUpdate(List<String[]> data)throws IOException {
String csv = "E:\\Semester 3\\PointOfSale2\\Inventory.csv";
CSVWriter writer = new CSVWriter(new FileWriter(csv));
writer.writeAll(data);
writer.close();
}
public void initInventory() throws FileNotFoundException, IOException {
BufferedReader readInventory=new BufferedReader(new FileReader("E:\\Semester 3\\PointOfSale2\\Inventory.csv"));
String line=readInventory.readLine();
StringTokenizer nextItem;
while(line!=null){
nextItem=new StringTokenizer(line, ",");
while(nextItem.hasMoreTokens()){
int productID=Integer.parseInt(nextItem.nextToken()); //Exception occuring here
int quantity=Integer.parseInt(nextItem.nextToken());
Inventory inventory=new Inventory(productID, quantity);
inStock.add(inventory);
line=readInventory.readLine();
}
}
readInventory.close();
}
public static void writeInventoryToUpdate(列表数据)引发IOException{
String csv=“E:\\3学期\\销售点2\\Inventory.csv”;
CSVWriter writer=新CSVWriter(新文件编写器(csv));
writer.writeAll(数据);
writer.close();
}
public void initInventory()引发FileNotFoundException,IOException{
BufferedReader readInventory=新的BufferedReader(新文件阅读器(“E:\\Semmer 3\\PointOfSale2\\Inventory.csv”);
String line=readInventory.readLine();
StringTokenizer nextItem;
while(行!=null){
nextItem=新的StringTokenizer(行,“,”);
while(nextItem.hasMoreTokens()){
int productID=Integer.parseInt(nextItem.nextToken());//此处发生异常
int quantity=Integer.parseInt(nextItem.nextToken());
存货=新的存货(产品ID、数量);
增加库存(库存);
line=readInventory.readLine();
}
}
readInventory.close();
}
您的代码基本上是正确的想法,但在流程上存在一些问题
BufferedReader readInventory=new BufferedReader(new FileReader("E:\\Semester 3\\PointOfSale2\\Inventory.csv"));
for(String line = readInventory.readLine(); line != null; line = readInventory.readLine())
{
StringTokenizer nextItem = new StringTokenizer(line, ",");
if(nextItem.countTokens() >= 2)
{
int productID = Integer.parseInt(nextItem.nextToken());
int quantity = Integer.parseInt(nextItem.nextToken());
Inventory inventory=new Inventory(productID, quantity);
inStock.add(inventory);
}
}
readInventory.close();
这里有一些东西应该在输入的情况下起作用
12345,67890
15243,60798
3,6
77,12355678,123 //anything past the first two values are ignored
555
777,333 //and single value things are skipped
如果看不到您试图解析的CSV文件类型,我就无法为您提供更好的解决方案
但是对于最基本形式的CSV文件(两个int值之间用逗号分隔),通过编辑您的问题向我们显示代码和完整堆栈跟踪,这应该可以很好地工作,并标记代码中出现问题的行。在您向我们展示CSV文件的格式或用于写入/读取CSV文件的代码之前,我们确实无法为您提供太多帮助-您必须帮助我们帮助您公开静态无效writeInventoryToUpdate(列表数据)引发IOException{String CSV=“E:\\Sterm 3\\PointOfSale2\\Inventory.CSV”;CSVWriter writer=new CSVWriter(new FileWriter(csv));writer.writeAll(data);writer.close();}还包括一个csv文件的示例,尽管堆栈跟踪应该显示异常发生在哪一行,以便您可以看到它试图读取的字段。还要注意的是,csv文件可以有标题,字段可以被引用,这两个都不能处理。调试它吗?什么是nextItem.nextToken()?在寻求帮助之前,您应该了解如何调试应用程序。