编程作业
Github项目地址
https://gitee.com/lpf_666/project-java
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
• Estimate | • 估计这个任务需要多少时间 | 15 | 20 |
Development | 开发 | ||
• Analysis | • 需求分析 (包括学习新技术) | 120 | 160 |
• Design Spec | • 生成设计文档 | 30 | 30 |
• Design Review | • 设计复审 | 20 | 30 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 30 | 25 |
• Design | • 具体设计 | 40 | 60 |
• Coding | • 具体编码 | 300 | 350 |
• Code Review | • 代码复审 | 20 | 100 |
• Test | • 测试(自我测试,修改代码,提交修改) | 30 | 50 |
Reporting | 报告 | ||
• Test Repor | • 测试报告 | 60 | 60 |
• Size Measurement | • 计算工作量 | 15 | 30 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 30 | 20 |
合计 | 720 | 935 |
解题思路描述
输出要求:
1 统计文件的字符数(对应输出第一行):
2 统计文件的单词总数(对应输出第二行),单词:至少以4个英文字母开头,跟上字母数字符号,单词以分隔符分割,不区分大小写。
3 统计文件的有效行数(对应输出第三行):任何包含非空白字符的行,都需要统计。
4 统计文件中各单词的出现次数(对应输出接下来10行),最终只输出频率最高的10个。
第一步:文件读取。利用Buffered,输入流中读取文本并缓冲字符,以便有效地读取字符,数组和行
第二步:统计行数,对每行的字符累加计算总字符数
第三步:过滤筛选单词统计排序。
第四步:输出结果
代码规范制定链接:https://gitee.com/lpf_666/project-java/blob/master/20188384/src/rainbows/codestyle.md
设计与实现过程
对文件进行读取
BufferedReader br = new BufferedReader(new FileReader(filepath));
List<String> lists = new ArrayList<String>();
String readLine = null;
计算
while((readLine = br.readLine()) != null)
{
characters+=readLine.length();
对单词频率进行排序
public static void SortMap(Map<String,Integer> old)//
{
ArrayList<Map.Entry<String,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(old.entrySet());
Collections.sort(list,new Comparator<Map.Entry<String,Integer>>()
{
@Override
public int compare(Entry<String, Integer> word1, Entry<String, Integer> word2)
{
return word2.getValue() - word1.getValue();
}
});
性能改进
暂无
单元测试
选自汤姆历险记中不同章节的片段
异常处理说明
无效的文件地址会导致系统异常
心路历程与收获
这次作业让我受益匪浅,让我学会了许多新的知识,比如gitee的运用,异常处理,单元测试等有了新的认识和了解。希望下一次作业能有更多收获~