zoukankan      html  css  js  c++  java
  • 软件工程——第二周编程作业

    这个作业属于哪个课程 软件工程——计科1班,班级链接
    这个作业要求在哪里 作业要求——202103226-1 编程作业
    这个作业的目标 学会如何使用gitee,学会词频统计算法
    作业正文 软件工程——第二周编程作业
    其他参考文献 廖雪峰的git教程软件工程师的能力评估和职业发展,.gitignore配置语法完全版 Java词频

    WordCount编程

    1.Github项目地址

    project-java

    2.PSP表格

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划 25 35
    • Estimate • 估计这个任务需要多少时间 25 35
    Development 开发 630 1955
    • Analysis • 需求分析 (包括学习新技术) 200 600
    • Design Spec • 生成设计文档 90 100
    • Design Review • 设计复审 20 30
    • Coding Standard • 代码规范 (为目前的开发制定合适的规范) 20 25
    • Design • 具体设计 100 200
    • Coding • 具体编码 200 600
    • Code Review • 代码复审 70 100
    • Test • 测试(自我测试,修改代码,提交修改) 200 300
    Reporting 报告 90 100
    • Test Repor • 测试报告 70 80
    • Size Measurement • 计算工作量 10 15
    • Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 10 5
    合计 745 2090

    3.解题思路描述

    1、文件读取。用Buffered,readline按行读取
    2、过滤筛选单词并统计word的数量。
    3、排序。使用SortMap进行排序
    4、最后将结果输出

    4.代码规范制定链接

    codestyle.md

    5.设计与实现过程

    行数读取:用readline获取所有行数,并减去无效行
    统计有效单词个数

        public static void main(String[] args) throws Exception {  
              
            BufferedReader bufferr = new BufferedReader(new FileReader("C:/test/wordcount test.txt"));  
            List<String> lists = new ArrayList<String>();          //A list of store filtered words  
            String readLine = null;
            int countword = 0;
    		while((readLine = bufferr.readLine()) != null){  
                String[] wordsArr = readLine.split("[^a-zA-Z0-9]");  //Filter out letters and numbers only
                for (String word : wordsArr) {  
                	String text = word.toLowerCase();
                    if(text.length() >=4){             //Remove words less than 4 letters in length 
                        lists.add(text);  
                        countword ++;
                    }
                }  
            }
    

    用sortmap进行排序

        public static void SortMap(Map<String,Integer> oldmap){                 //Sort by value's value 
           
         ArrayList<Map.Entry<String,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(oldmap.entrySet());  
           
         Collections.sort(list,new Comparator<Map.Entry<String,Integer>>(){  
             @Override  
             public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {  
                 return o2.getValue() - o1.getValue();      //descending sort  
             }  
         });  
           
         for(int i = 0; i<10; i++){  
             System.out.println(list.get(i).getKey()+ ": " +list.get(i).getValue());  
         }     
     }  
    

    6.性能改进

    还有几个功能没有加上去的,需要尽量加

    7.单元测试

    8.心路历程与收获

    这次作业我用了不太熟悉的java写的,所以很多部分都没有完善好,参考了很多资料,目前完成这样了。下次作业开始还是打算用C,不用java折磨自己了。

  • 相关阅读:
    京东分页
    相册分类列表页
    在线运行Javascript,Jquery,HTML,CSS代码
    点击事件后动画提示
    一些广告代码
    爱可有—之最经典
    爱可有网络社区需要定义
    鼠标移动时缩小图片显示说明
    Flask-RESTful 快速入门
    Sequelize 关系模型简介
  • 原文地址:https://www.cnblogs.com/LILI6/p/14604602.html
Copyright © 2011-2022 走看看