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

     任务:

    英语的26 个字母的频率在一本小说中是如何分布的?

    某类型文章中常出现的单词是什么?

    某作家最常用的词汇是什么?

    《哈利波特》 中最常用的短语是什么,等等。

    我们就写一些程序来解决这个问题,满足一下我们的好奇心。

    0步:输出某个英文文本文件中 26 字母出现的频率,由高到低排列,并显示字母出现的百分比,精确到小数点后面两位。

      思路其实很简单:

    1.按字节读取文档,碰到非字母跳过,字母则相应的字母数量加一,至于存储,可以用二维数组,也可以考虑使用链表,链表相对简单一点,就是开始设计比较难。计算频率的时候,先计算出总和,利用1.00/1=1.00的特性求出概率,在惊进行排列。

    2.单词,按字节读取,遇到非字母跳过,遇到字母则开始存储,直到遇到非字母,组成一个单词,进行查重,非重复则单词数量加一。频率算法相同。

     

      代码:

    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    
    public class WordNumTest {
    
        @SuppressWarnings("null")
        public static void main(String[] args) throws Exception {
            // TODO Auto-generated method stub
            int [] Num=new int [26];
            for(int i=0;i<26;i++)
            {
                Num[i]=0;
            }
            //统计
            try {
                FileReader fr = new FileReader("piao.txt");
                BufferedReader bf = new BufferedReader(fr);
                while(bf.ready())
                {
                    int n=bf.read();
                    if(n=='a'||n=='A')
                        Num[0]++;
                    if(n=='b'||n=='B')
                        Num[1]++;
                    if(n=='c'||n=='D')
                        Num[2]++;
                    if(n=='d'||n=='D')
                        Num[3]++;
                    if(n=='e'||n=='E')
                        Num[4]++;
                    if(n=='f'||n=='F')
                        Num[5]++;
                    if(n=='g'||n=='G')
                        Num[6]++;
                    if(n=='h'||n=='H')
                        Num[7]++;
                    if(n=='i'||n=='I')
                        Num[8]++;
                    if(n=='j'||n=='J')
                        Num[9]++;
                    if(n=='k'||n=='K')
                        Num[10]++;
                    if(n=='l'||n=='L')
                        Num[11]++;
                    if(n=='m'||n=='M')
                        Num[12]++;
                    if(n=='n'||n=='N')
                        Num[13]++;
                    if(n=='o'||n=='O')
                        Num[14]++;
                    if(n=='p'||n=='P')
                        Num[15]++;
                    if(n=='q'||n=='Q')
                        Num[16]++;
                    if(n=='r'||n=='R')
                        Num[17]++;
                    if(n=='s'||n=='S')
                        Num[18]++;
                    if(n=='t'||n=='T')
                        Num[19]++;
                    if(n=='u'||n=='U')
                        Num[20]++;
                    if(n=='v'||n=='V')
                        Num[21]++;
                    if(n=='w'||n=='W')
                        Num[22]++;
                    if(n=='x'||n=='X')
                        Num[23]++;
                    if(n=='y'||n=='Y')
                        Num[24]++;
                    if(n=='z'||n=='Z')
                        Num[25]++;
                }
                bf.close();
                fr.close();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            //求和
            int sum=0;
            for(int i=0;i<26;i++)
            {
                sum=sum+Num[i];
            }
            //求百分比
            double [] persent=new double [26];
            for(int i=0;i<26;i++)
            {
                persent[i]=0.00;
            }
         //排序
    for(int i=0;i<26;i++) { persent[i]=Num[i]*1.00/sum; //System.out.println(persent[i]); System.out.println(String.format("%.2f", persent[i])); } //输出 double []Max=new double [26]; for(int i=0;i<26;i++) { Max[i]=0; }//赋0处理 //排序 //45分钟 //2.统计单词 //3.无用词 } }
  • 相关阅读:
    预排序遍历树算法牺牲写性能的改进
    改造PAXOS算法消灭活锁
    扣减库存策略采用订单是否锁定库存方案
    [转]java-小技巧-001-Long序列化到前端不支持
    springboot-mybatis 批量insert
    VS2010 调试启动特别慢
    C# Winform App 获取当前路径
    DevExpress PivotGridControl控件
    (JavaScript)《JS面向对象编程指南》-- JavaScript基本数据类型、数组、循环
    (HTML5)HTML5 Web Notification桌面通知实践
  • 原文地址:https://www.cnblogs.com/msdog/p/11061047.html
Copyright © 2011-2022 走看看