这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/computer-science-class4-2018/ |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/computer-science-class4-2018/homework/11880 |
这个作业的目标 | <编程进行词频的统计> |
学号 | <20188515> |
一、码云地址
https://gitee.com/unbetter/project-java/tree/master/20188515
二、思路描述
先读取文件的信息,再检查文件中字符数和检查单词总数,接着统计有效行数,最后输出统计内容到指定的输出文件中
三、设计与实现过程
1.检查文件中字符数
`
while((ch=(char)br.read())!=(char)-1)
{
if(ch<=127)//保证读取的字符为ASCLL码
{
countChar++;
}
} `
2.检查单词总数
`
String[] strs=words.split("[^a-zA-Z0-9]");
String regexs = "^[a-zA-Z]{4,}.*";
for(int i=0;i<strs.length;i++)
{
if(strs[i].matches(regexs))
{
countWord++;
}
} `
3.统计有效行数
`
for (int i=0;i<c.length;i++)
{
if (c[i]!='
' && c[i]!='
' && c[i]!=' ')
{
countLine++;
break;
}
}`
4.统计出现频率最高的10个单词的出现次数
`
for (int i = 0; i < strs.length; i++) {
if (strs[i].matches(regexs)) {
if (!map.containsKey(strs[i].toLowerCase())) {
map.put(strs[i].toLowerCase(), 1);
} else {
int num = map.get(strs[i].toLowerCase());
map.put(strs[i].toLowerCase(), num + 1);
}
}
}`
5.输出统计内容到指定的输出文件中
`
StringBuilder str = new StringBuilder();
str.append("characters: "+countChar+"
" + "words: "+countWord+"
" +"lines: "+countLine+"
"s);
for(int i = 0;i<(list.size()<10 ? list.size():10);i++){
str.append(list.get(i).getKey()+": "+list.get(i).getValue()+"
");
}`
四、心路历程与收获
通过这次作业感到自己有很多的不足之处,所以以后还需努力学习,对技术的用法还掌握还不熟悉。在写作业的时候,感觉非常的难,还是学的不透彻。
五、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 30 |
Estimate | 估计这个任务需要多少时间 | 1000 | 1050 |
Development | 开发 | 200 | 200 |
Analysis | 需求分析 (包括学习新技术) | 210 | 180 |
Design Spec | 生成设计文档 | 60 | 30 |
Design Review | 设计复审 | 30 | 10 |
Coding Standar | 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
Design | 具体设计 | 50 | 60 |
Coding | 具体编码 | 100 | 90 |
Code Review | 代码复审 | 20 | 60 |
Test | 测试(自我测试,修改代码,提交修改) | 20 | 40 |
Reporting | 报告 | 20 | 40 |
Test Repor | 测试报告 | 20 | 15 |
Size Measurement | 计算工作量 | 10 | 10 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 20 |
合计 | 1800 | 1815 |