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

JavaFX购物车系统:文件解析与ArrayList填充失败问题求助

问题排查与解决方案

1. 先确认文件路径正确性

  • 把BookPrices.txt放在项目根目录(和src文件夹同级),如果用IDE运行,可右键文件选择「Copy Path」获取绝对路径替换硬编码路径,避免因路径找不到文件导致读取失败。
  • 错误路径示例:
    File file = new File("src/BookPrices.txt");
    
    正确路径示例(项目根目录):
    File file = new File("BookPrices.txt");
    

2. 修复文件读取与解析逻辑

常见问题包括集合未初始化、拆分规则不匹配文件格式、未处理读取异常,以下是适配书名,价格格式(如Java核心技术,89.0)的正确代码:

// 必须提前初始化集合,避免空指针
ArrayList<String> inventoryTitles = new ArrayList<>();
ArrayList<Double> inventoryPrices = new ArrayList<>();

try (BufferedReader br = new BufferedReader(new FileReader("BookPrices.txt"))) {
    String line;
    while ((line = br.readLine()) != null) {
        // 处理行首尾空格,按逗号拆分
        String[] parts = line.trim().split(",");
        if (parts.length == 2) {
            inventoryTitles.add(parts[0].trim());
            // 捕获价格转换异常,避免整段读取中断
            try {
                double price = Double.parseDouble(parts[1].trim());
                inventoryPrices.add(price);
            } catch (NumberFormatException e) {
                System.err.println("行「" + line + "」价格格式错误");
            }
        } else {
            System.err.println("行「" + line + "」格式不符合要求");
        }
    }
} catch (IOException e) {
    e.printStackTrace(); // 打印异常信息,快速定位读取失败原因
}

3. 确保代码执行时机正确

  • 文件读取代码要在start()方法的初始化阶段执行,不能等到按钮点击后才读取,否则点击按钮时集合还是空的:
    @Override
    public void start(Stage primaryStage) {
        // 先加载书籍数据
        loadBookInventory();
        // 再创建ListView并绑定数据
        ListView<String> bookListView = new ListView<>();
        bookListView.getItems().addAll(inventoryTitles);
        // 后续UI组件设置...
    }
    
    private void loadBookInventory() {
        // 把上面的读取解析代码放在这里
    }
    

4. 快速调试验证

  • 在读取完成后打印集合大小:System.out.println("已加载书名数量:" + inventoryTitles.size());,确认是否有数据被读取。
  • 检查BookPrices.txt编码是否为UTF-8,避免乱码导致读取内容异常。
  • 确保按钮点击事件中使用的是同一个集合对象,不要在事件方法里重新初始化集合。

内容的提问来源于stack exchange,提问作者Newbie123

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:02:18