zoukankan      html  css  js  c++  java
  • 词频项目

    github:https://github.com/zhonghongyao/WordSplit.git

    1.需求分析

    使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发。软件基本功能要求如下: 1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个。 2.程序需要很壮健,能读取容纳英文原版《哈利波特》10万词以上的文章。 3.指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图。 4.高频词统计功能:用户从键盘输入高频词输出的个数k,运行程序统计功能,可按文本中词频数降序显示前k个单词的词频及单词。 5.统计该文本所有单词数量及词频数,并能将单词及词频数按字典顺序输出到文件words.txt。

    2. 功能设计

    利用java的输入输出实现对文本文件的读取、利用map存储数据,利用Comparator排序,进行词频统计后输出单词的使用次数。

    3.测试

    图片名称
    图片名称
    图片名称

    4.代码块

    while ((line = br.readLine()) != null) {
                switch (count){
                    case 1:String strSource[]=line.split(" ");
                        for (int i = 0; i < strArray.length; i++) {
                            for (int j = 0; j < strSource.length; j++) {
                                if(strArray[i].equals(strSource[j])){
                                    arrCount[i]++;
                                }
    
                            }
    
                        }
                    default:String strAll[]=line.split(" ");
                        for (int i = 0; i <strAll.length ; i++) {
                            if(map.size()==0){
    
                              map.put(strAll[i],1);
                                continue;
                            }
                            int size=map.size();
    
                            boolean flag=false;
                            for (Map.Entry<String, Integer> entry : map.entrySet()) {
    
                                if(entry.getKey().equals(strAll[i])){
                                    int temp=entry.getValue();
    
                                    entry.setValue(++temp);
                                    flag=true;
                                }
                            }
                            if(flag==false){
    
                                map.put(strAll[i],1);
                            }
                        }
    
                        break;
                }
            }
            //输出
            if(count==1){
                for (int i = 0; i <strArray.length ; i++) {
    
                    System.out.print(strArray[i]+"-----数量:"+arrCount[i]+" ");
                    //柱形图
                }
            }else if(count==2){
    
                Map<String,Integer>mapResult=MapSort.sortMapByValue(map);
                for (Map.Entry<String, Integer> entry : mapResult.entrySet()) {
                    if(k==0){
                        break;
                    }else {
                        System.out.println("单词= " + entry.getKey() + "  数量= " + entry.getValue());
                        k--;
                    }
                }
    
            }else if(count==3){
               Map<String,Integer>mapRe= MapSort.sortMapByValue(map);
                writeFile(mapRe);
            }
    
        } catch (IOException e) {
            e.printStackTrace();
        }
    
    }
    

    5.总结

    本项目采用类思想分块处理,实现了软件工程的“高内聚,低耦合”思想

    6.psp展示

    图片名称
  • 相关阅读:
    C#中的委托和事件的使用
    C#中Attribute/特性的使用
    Eclipase + CDT
    设计模式总结
    Nginx源码编译
    Nginx自定义扩展模块
    电池的寿命
    大盗阿福
    河中跳房子
    An Easy Problem
  • 原文地址:https://www.cnblogs.com/zhonghongyao/p/10561974.html
Copyright © 2011-2022 走看看