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掌握的还是不是很熟练,接下来还是要加强平时的代码练习,

浙公网安备 33010602011771号