zoukankan      html  css  js  c++  java
  • 单词统计

    问题:

    英语的26 个字母的频率在一本小说中是如何分布的?某类型文章中常出现的单词是什么?某作家最常用的词汇是什么?哈利波特》 中最常用的短语是什么,等等。我们就写一些程序来解决这个问题,满足一下我们的好奇心。第0步:输出某个英文文本文件中 26 字母出现的频率,由高到低排列,并显示字母出现的百分比,精确到小数点后面两位。字母频率 = 这个字母出现的次数 / (所有A-Z,a-z字母出现的总数)如果两个字母出现的频率一样,那么就按照字典序排列。  如果 S 和 T 出现频率都是 10.21%, 那么, S 要排在T 的前面。第1步:输出单个文件中的前 N 个最常出现的英语单词。作用:一个用于统计文本文件中的英语单词出现频率。单词:以英文字母开头,由英文字母和字母数字符号组成的字符串视为一个单词。单词以分隔符分割且不区分大小写。在输出时,所有单词都用小写字符表示。英文字母:A-Z,a-z字母数字符号:A-Z,a-z,0-9第1步:输出单个文件中的前 N 个最常出现的英语单词。分割符:空格,非字母数字符号 例:good123是一个单词,123good不是一个单词。good,Good和GOOD是同一个单词。

    package com;
    import java.io.File;
    import java.io.RandomAccessFile;
    import java.util.HashMap;
    import java.util.Map;

    public class text {

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    File file = new File("E://Eclipse//piao.txt");

    // 统计和显示统计数据
    Map<String, Integer> countMap = count(file);
    for (Map.Entry<String, Integer> each : countMap.entrySet()) {
    System.out.println(each.getKey() + "字母的个数: " + each.getValue());
    }
    }

    private static Map<String, Integer> count(File f) {
    Map<String, Integer> countMap = new HashMap<>();
    try {
    RandomAccessFile raf = new RandomAccessFile(f, "rw");
    // 逐行读取
    String line = null;
    while (null != (line = raf.readLine())) {
    // 判断行里面的每一个字符
    char[] arr = line.toCharArray();
    for (char ch : arr) {
    // 将a-z转换成大写的A-Z
    if (ch >= 'a' && ch <= 'z') {
    ch -= 32;
    }

    // 统计
    if (ch >= 'A' && ch <= 'Z') {
    String key = String.valueOf(ch);
    Integer value = countMap.get(key);
    if (value == null) {
    value = 0;
    }
    countMap.put(key, value + 1);
    }
    }
    }
    // 关闭IO流
    raf.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    return countMap;

    }

    }

  • 相关阅读:
    hadoop学习摘要
    尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。
    sqlserver 2012 IDE中 Windows身份验证连接服务器报错 ,Login failed for user 'xxxAdministrator'. 原因: 找不到与提供的名称匹配的登录名。
    不重复随机数列生成算法
    异步和等待(async和await)
    mvc和mvvm的区别?
    Redis命令大全
    Java NIO 三大组件之 Buffer
    Java NIO 三大组件之 Channel
    Java NIO概述
  • 原文地址:https://www.cnblogs.com/baimafeima/p/11071444.html
Copyright © 2011-2022 走看看