一个炒鸡简单计算拼音声母出现次数及概率程序

及其原始代码,以防今后有类似场景需要使用,特意记录一下;

功能为计算拼音声母出现次数及概率


 

public static void main(String[] args) {
    //测试文本
    String testStr = "wo\tyu\tfu\tqin\tbu\txiang\tjian\tyi\ter\tnian";
    String[] testAtrArr = testStr.split("\t");
    //声母表
    String[] soundArr = new String[]{"b","p","m","f","d","t","n","l","g","k","h","j","q","x","zh","ch","sh","r","z","c","s","y","w"};
    //声母出现次数
    Map soundTimesMap = new TreeMap<String, Integer>();
    //测试文字长度
    int testWordLenth = testAtrArr.length;

    for (int i = 0; i < testWordLenth; i++) {
        String testFirstStrTemp = testAtrArr[i].substring(0,1);
        String testSecondStrTemp = testAtrArr[i].substring(0,2);

        for (int j = 0; j < soundArr.length; j++) {
            String soundArrTemp = soundArr[j];

            if (testFirstStrTemp.equals(soundArrTemp) && testSecondStrTemp != "zh"
            && testSecondStrTemp != "ch" && testSecondStrTemp != "sh") {
                int count = 1;
                if (soundTimesMap.containsKey(soundArrTemp)) {
                    count = (int) soundTimesMap.get(soundArrTemp) + 1;
                }
                soundTimesMap.put(soundArrTemp, count);
                break;
            }

            if (testSecondStrTemp.equals(soundArrTemp)) {
                int count = 1;
                if (soundTimesMap.containsKey(soundArrTemp)) {
                    count = (int) soundTimesMap.get(soundArrTemp) + 1;
                }
                soundTimesMap.put(soundArrTemp, count);
                break;
            }
        }
    }
    System.out.println(soundTimesMap);
    Set<Map.Entry> entrySet = soundTimesMap.entrySet();
    NumberFormat numberFormat = NumberFormat.getInstance();
    // 设置精确到小数点后2位
    numberFormat.setMaximumFractionDigits(2);
    Map soundRateMap = new TreeMap();
    for (Map.Entry entry : entrySet) {
        soundRateMap.put(entry.getKey(), numberFormat.format(Float.valueOf(((Integer) entry.getValue()).toString()) * 100 / (float) testWordLenth));
    }
    System.out.println(soundRateMap);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值