zoukankan      html  css  js  c++  java
  • 结对编程—词频统计

    作业要求


    • [必做 1] 基于作业3的结果,读取一个较小的文本文件A_Tale_of_Two_Cities.txt,统计该文件中的单词的频率,并将统计结果输出到当前目录下的 Result1.txt 文件。 (第一阶段初稿完成该要求)
    • 命令行格式: 提示符> Myapp.exe -f filename.txt > Result.txt (PS:C++ 程序,Java 程序输出方式类似) filename.txt 为前面下载的文件名。
    • 解释:
      • 选项 -f 表示后面跟文件名
      • 输出格式规定(参考作业3中的示例):
        • 首先按照频率由高到低排序
        • 频率一样的词, 按照字典顺序排序
    • 此外, 读取一个较大的文本文件Gone_with_the_wind.txt实验对比程序执行效率,做如下改进,比较改进前后程序执行时间。

    本次和舍友 范鋆 同学一起合作完成 他的博客地址

     
    合作图片
    编程语言 JAVA
    编译环境 eclipse
     
    本次作业中我们遇到了比较大的困难,在第三次作业中我使用了c++编程。但是由于算法过于复杂在运行给出的大文件时程序崩溃。
    应该是由于c++中数组的内存空间有限导致的。这段时间在学习java,所以在和舍友讨论后决定使用java语言完成此次作业。
     
    我主要负责文件结果的输出部分主要代码如下
    public static void sort(Map<String,Integer> map){  
            List<Map.Entry<String, Integer>> infoIds = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());   
            Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() {     
                public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {     
                    return (o2.getValue() - o1.getValue());     
                }     
        }); //排序 
            String [] str3=null; 
            int len=infoIds.size();
            int count=1;
            
        try{
            FileWriter fw=new FileWriter("Result1.txt");
            BufferedWriter bw=new BufferedWriter(fw);
            int q=0;
            for (int i = 0; i < len; i++) 
            {   //输出  
                Map.Entry<String, Integer> id = infoIds.get(i); 
                if(id.getKey()!=null)                                       
                      str3=id.getKey().split("");
                    if( str3!=null&&str3.length>3)                     //str3可能为空,且这个控制只有含有3个字母以上的单词才打印
             if(count<=5)
              {
                 q=id.getValue();
                 bw.write(id.getKey());
                 bw.write(":  ");
                 bw.write(String.valueOf(q));
                 bw.write("	");
                 count++;
              }
             else
             {
               q=id.getValue();
               bw.write(id.getKey());
               bw.write(":  ");
               bw.write(String.valueOf(q));
               bw.write("
    ");       //换行
               count=1;
             }
            }
            bw.close();fw.close();
        }catch(Exception e){
            e.printStackTrace();} 
        } 
    }   

    程序结果

    总结心得

    通过本次合作编程,我意识到了合作的重要,两个人往往想法比一个人丰富。也很少会犯低级错误,写程序的效率大大提高了。

  • 相关阅读:
    Swift3 重写一个带占位符的textView
    Swift3 使用系统UIAlertView方法做吐司效果
    Swift3 页面顶部实现拉伸效果代码
    Swift3 倒计时按钮扩展
    iOS 获取当前对象所在的VC
    SpringBoot在IDEA下使用JPA
    hibernate 异常a different object with the same identifier value was already associated with the session
    SpringCloud IDEA 教学 番外篇 后台运行Eureka服务注册中心
    SpringCloud IDEA 教学 (五) 断路器控制台(HystrixDashboard)
    SpringCloud IDEA 教学 (四) 断路器(Hystrix)
  • 原文地址:https://www.cnblogs.com/sunhongyi/p/5309084.html
Copyright © 2011-2022 走看看