java统计字符串在文件中出现的次数

问题描述:输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。

import java.io.BufferedReader;
import java.io.FileReader;

/**
 * 输入一个文件名和一个字符串,统计这个字符串在这个文件中的出现次数
 */
public class Account {

    /**
     * 工具类中的方法都是静态方式访问的因此将构造器私有不允许创建对象
     */
    private Account() {
        throw new AssertionError();
    }

    /**
     * 统计给定文件中给定字符串的出现次数
     * @param filename : 文件名
     * @param word : 字符串
     * @return : 字符串在文件中的出现次数
     */
    public static int countWordInFile(String filename, String word) {
        int counter = 0;
        try (FileReader fr = new FileReader(filename)){
            try (BufferedReader br = new BufferedReader(fr)){
                String line =  null;
                while ((line = br.readLine()) != null) {
                    int index = -1;
                    while (line.length() >= word.length() && (index = line.indexOf(word)) >= 0) {
                        counter++;
                        line = line.substring(index+word.length());
                    }
                }
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
        return counter;
    }
}

 

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java统计字符串每个字符出现次数的问题,需要考虑以下几个问题: 1. 字符串的来源:需要确定字符串是通过用户输入、文件读取还是其他方式获取的。根据字符串来源的不同,可能需要处理不同的输入异常和边界情况。 2. 字符串的长度:需要考虑字符串的长度,以防止过长的字符串导致内存溢出或性能问题。可以使用适当的数据结构来存储字符及其出现次数,例如HashMap。 3. 字符的范围:需要确定待统计的字符的范围。对于ASCII字符来说,可以使用长度为256的数组或HashMap进行统计;对于unicode字符来说,可能需要使用更复杂的数据结构。 4. 字符的大小写敏感性:需要确定是否区分字符的大小写。根据需求,可以选择全部转换为大写或小写再进行统计,或者保留大小写进行统计。 5. 特殊字符处理:可能需要考虑特殊字符的处理,例如空格、换行符、制表符等,是否需要统计它们的出现次数。 6. 输出结果的形式:需要确定如何输出统计结果。可以选择打印到控制台、存储到文件或以其他形式展示。 7. 异常处理:可能需要处理一些异常情况,例如空字符串字符串为null等,以确保程序的稳定性和可靠性。 总之,统计字符串每个字符出现次数需要考虑字符串的来源、长度、字符的范围、大小写敏感性、特殊字符处理、输出结果形式以及异常处理等问题。通过合理的算法和数据结构选择,可以实现高效准确的字符统计

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值