You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:48:51