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

如何读取文本文件中以空行分隔的食谱数据并生成对应Recipe对象?

实现方案

你只需要调整readFile方法的读取逻辑,以空行为分割触发单份食谱的生成即可,具体修改如下:

修改后的readFile方法代码

private void readFile(String fileName){ //读取食谱文件的方法
    ArrayList<String> currentRecipeLines = new ArrayList<>(); //存储当前正在读取的单份食谱的所有行
    try {
        Scanner file = new Scanner(Paths.get(fileName));
        while(file.hasNextLine()){
            String line = file.nextLine().trim(); // 去掉首尾空白字符,兼容带空格的空行
            if (line.isEmpty()) { // 读到空行代表当前食谱读取完毕
                if (!currentRecipeLines.isEmpty()) { // 避免连续空行生成无效空食谱
                    createRecipe(currentRecipeLines);
                    currentRecipeLines.clear(); // 清空临时列表准备读取下一份食谱
                }
                continue;
            }
            currentRecipeLines.add(line);
        }
        // 循环结束后处理最后一份食谱(最后一份食谱末尾可能没有空行)
        if (!currentRecipeLines.isEmpty()) {
            createRecipe(currentRecipeLines);
        }
        
    } catch (Exception e) {
        System.out.println("Error: " + e.getMessage());
    }
}

改动说明

  • 临时列表命名调整为currentRecipeLines更贴合语义,你也可以保留原来的命名
  • 每读到空行时就触发当前已读取食谱的生成逻辑,同时清空临时列表
  • 增加了循环结束后的兜底处理,避免最后一份食谱因为末尾没有空行被遗漏
  • 增加了空行场景下对临时列表的非空判断,避免文件开头、中间连续空行导致生成无效的空食谱

你的原有createRecipe方法不需要做任何修改,就可以正常生成多份Recipe对象存入RecipesManager中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:54:03