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

如何统计从Results.txt提取的含Goal/goal的句子数量?

实现统计含"Goal"/"goal"句子数量的方法

嘿,这个需求超简单的!我来给你两种实现思路,你可以根据自己现有代码的结构来选:

方案一:在原有打印方法中同时统计并返回数量

如果你想让原来的方法既打印句子又返回统计数,可以直接在方法里加一个计数变量,每找到符合条件的句子就递增,最后返回这个数值:

public class GoalSentenceProcessor {
    // 修改原有方法,让它返回统计数量
    public int printAndCountGoalSentences() {
        int sentenceCount = 0;
        // 用try-with-resources自动关闭流,避免资源泄漏
        try (BufferedReader br = new BufferedReader(new FileReader("Results.txt"))) {
            String line;
            while ((line = br.readLine()) != null) {
                // 转成小写判断,同时匹配"Goal"和"goal"
                if (line.toLowerCase().contains("goal")) {
                    System.out.println(line); // 打印符合条件的句子
                    sentenceCount++; // 计数+1
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return sentenceCount; // 返回最终统计的数量
    }
}

调用的时候直接接收返回值就行,如果你的Results.txt里正好有2个符合条件的句子,返回的就是2:

public static void main(String[] args) {
    GoalSentenceProcessor processor = new GoalSentenceProcessor();
    int count = processor.printAndCountGoalSentences();
    System.out.println("符合条件的句子总数:" + count); // 输出2
}

方案二:单独写一个统计方法(职责分离)

如果想让代码职责更清晰,把打印和统计分开成两个独立的方法,这样后续维护更方便:

public class GoalSentenceProcessor {
    // 原有的打印方法,保持不变
    public void printGoalSentences() {
        try (BufferedReader br = new BufferedReader(new FileReader("Results.txt"))) {
            String line;
            while ((line = br.readLine()) != null) {
                if (line.toLowerCase().contains("goal")) {
                    System.out.println(line);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 新增的统计方法,专门负责计数
    public int countGoalSentences() {
        int sentenceCount = 0;
        try (BufferedReader br = new BufferedReader(new FileReader("Results.txt"))) {
            String line;
            while ((line = br.readLine()) != null) {
                if (line.toLowerCase().contains("goal")) {
                    sentenceCount++;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return sentenceCount;
    }
}

调用示例:

public static void main(String[] args) {
    GoalSentenceProcessor processor = new GoalSentenceProcessor();
    processor.printGoalSentences(); // 先打印符合条件的句子
    int count = processor.countGoalSentences(); // 再统计数量
    System.out.println("统计结果:" + count); // 返回2
}

小提示

  • 用line.toLowerCase().contains("goal")可以忽略大小写,同时匹配"Goal"、"goal"甚至"GOAL"这类变体
  • 这里默认每一行是一个句子,如果你的文本里句子是跨多行的(比如换行但没结束),可能需要调整判断逻辑,但根据你的描述,按行处理应该就够用啦

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:28:14