词频项目

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展示

图片名称

posted on 2019-03-19 22:57  钟红耀  阅读(207)  评论(1编辑  收藏  举报

导航