多行文本子串出现次数统计:如何将多行结果合并为总次数?
修改方案
不需要新增循环,只需要在现有循环基础上增加一个总次数累加变量,把每行的统计结果汇总后再输出即可,具体修改步骤如下:
- 在
main方法中初始化一个总计数器变量,用于累加所有行的子串出现次数 - 遍历每行文本时,不再直接打印单行的统计值,而是将其加到总计数器中
- 所有行处理完成后,打印总计数器的值
修改后的完整代码:
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.Scanner; public class OccurrencesAmount { public static int getOccurrencesAmount(String substring, String string) { substring = substring.toUpperCase(); string = string.toUpperCase(); int count = 0; int fromIndex = 0; int length = substring.length(); while (true) { int occurrenceIndex = string.indexOf(substring, fromIndex); if (occurrenceIndex < 0) { break; } count++; fromIndex = occurrenceIndex + length; } return count; } public static void main(String[] args) throws FileNotFoundException { try (Scanner scanner = new Scanner(new FileInputStream("input.txt"))) { String searchLine = "о"; // 新增总计数器 int totalCount = 0; while (scanner.hasNextLine()) { // 将单行统计值累加到总计数器 totalCount += getOccurrencesAmount(searchLine, scanner.nextLine()); } // 循环结束后打印总次数 System.out.println(totalCount); } } }
关键修改说明
- 新增
int totalCount = 0;:用于存储所有行的子串出现总次数 - 把原代码中直接打印单行结果的逻辑,改为
totalCount += ...进行累加 - 移到循环外部打印总结果,确保只输出一次最终统计值
内容的提问来源于stack exchange,提问作者Digger
相关产品推荐
相关产品推荐

