Java文本文件数据解析数组越界及库存求和问题咨询
解决Inventory数据解析与库存求和问题
先来说第一个头疼的数组越界问题,你想利用数组长度适配的思路完全没问题!核心就是根据每行拆分后的数组长度,判断是否读取第5个字段——比如二极管这类只有4项数据的行,咱们给缺失的字段(也就是你的tempResist)设一个合理的默认值就行,比如0.0,或者根据业务需求调整。
修改后的解析代码可以改成这样:
try { List<Inventory> invItem = new ArrayList<>(); // 推荐用try-with-resources自动关流,避免资源泄漏 try (BufferedReader br = new BufferedReader(new FileReader("inventory.txt"))) { String fileRead = br.readLine(); while (fileRead != null) { String[] tokenize = fileRead.split(","); String tempItem = tokenize[0]; String tempNumber = tokenize[1]; double tempStock = Double.parseDouble(tokenize[2]); double tempPrice = Double.parseDouble(tokenize[3]); // 关键判断:数组长度够才读取第5个元素,否则用默认值 double tempResist = 0.0; if (tokenize.length == 5) { tempResist = Double.parseDouble(tokenize[4]); } Inventory tempObj = new Inventory(tempItem, tempNumber, tempPrice, tempStock, tempResist); invItem.add(tempObj); fileRead = br.readLine(); } } } catch (IOException e) { e.printStackTrace(); }
再来说总库存求和的问题,这个就简单多了——遍历你的invItem列表,把每个组件的库存值累加就行。两种写法供你选:
常规循环写法
double totalStock = 0.0; for (Inventory item : invItem) { // 假设你的Inventory类有getStock()方法返回库存值 totalStock += item.getStock(); } System.out.println("所有组件总库存:" + totalStock);
Java 8+流式写法(更简洁)
double totalStock = invItem.stream() .mapToDouble(Inventory::getStock) .sum(); System.out.println("所有组件总库存:" + totalStock);
注意哦:要确保你的Inventory类有对应的getStock() getter方法,如果没有的话,记得补上这个方法来暴露库存属性~
内容的提问来源于stack exchange,提问作者Ncfc1
相关产品推荐
相关产品推荐

