软件工程——第二周编程作业

这个作业属于哪个课程 软件工程——计科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折磨自己了。

原文地址:https://www.cnblogs.com/LILI6/p/14604602.html