202103226-1 编程作业

课程科目 软件工程
作业要求 202103226-1 编程作业
作业目标 熟悉Github,完成编程任务
学号 20188415

1、Github项目地址

2、PSP表格

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

3、解题思路描述

由于自己的Java知识学习不到位,所以题目对我来说还是有点难度,我的解题思路是这样的,实现从文件中读入英文文章,统计单词个数,并按值从小到大输出,存储过滤后单词的列表,过滤出只含有字母的词语,存储单词计数信息,key值为单词,value为单词数,进行单词的词频统计,然后按值进行排序,按value的大小进行排序,最后进行输出。

4、代码规范制定链接

5、设计与实现过程

  • 读取文件内容,存储过滤后单词的列表,过滤出只含有字母的词语,去除长度为0的行
public static void main(String[] args) throws Exception {  
    	
    	String number = null;
    	List<String> list1 = new ArrayList<String>();                     
        BufferedReader br = new BufferedReader(new FileReader("E:/oldman.txt"));  
        
		while((number = br.readLine()) != null){  
            String[] count = number.split("[^a-zA-Z]");              
            for (String word : count) {  
                if(word.length() != 0) {                                      
                    list1.add(word);  
                }  
            }  
        }  
  • 存储单词计数信息,key值为单词,value为单词数,单词的词频统计
Map<String, Integer> wordsCount = new TreeMap<String,Integer>();
  • 按value的大小进行排序
for (String li : list1) {  
            if(wordsCount.get(li) != null){  
                wordsCount.put(li,wordsCount.get(li) + 1);  
            }
            else{  
                wordsCount.put(li,1);  
            }  
        }       
        SortMap(wordsCount);                                               
    } 
  • 按Value的大小进行输出
public static void SortMap(Map<String,Integer> oldmap){  
          
        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();                      
            }  
        });  
          
        for(int i = 0;i<list.size();i++){  
            System.out.println(list.get(i).getKey()+ ": " +list.get(i).getValue());  
        }     
    }    

6、性能改进

7、单元测试

8、异常处理说明

9、心路历程与收获

做完这次作业发现自己还是有很多不会,对java掌握的还是不是很熟练,接下来还是要加强平时的代码练习,

原文地址:https://www.cnblogs.com/Emotional/p/14608660.html