编程作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/computer-science-class3-2018/homework/11879
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/computer-science-class3-2018/homework/11879
这个作业的目标 学会使用gitee并且完成词频统计编程
学号 20188489
其他参考文献 《构建之法》

gitee地址
https://gitee.com/swaggyxuan/software-engineering-20188489

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

1.统计文件的字符数(对应输出第一行):

只需要统计Ascii码,汉字不需考虑
空格,水平制表符,换行符,均算字符

2.统计文件的单词总数(对应输出第二行)

单词:至少以4个英文字母开头,跟上字母数字符号,单词以分隔符分割,不区分大小写。
英文字母: A-Z,a-z
字母数字符号:A-Z, a-z,0-9
分割符:空格,非字母数字符号

3.统计文件的有效行数(对应输出第三行)

任何包含非空白字符的行,都需要统计。

4.统计文件中各单词的出现次数(对应输出接下来10行)

最终只输出频率最高的10个。频率相同的单词,优先输出字典序靠前的单词。

设计与实现过程:

1.判断是否存在
2.进行排序
3.计算总单词数
4.得到每一个单词以及次数, 并且记录到Map集合中

java对文件操作的方法有很多,此处主要用了BufferedInputStream和BufferedOutputStream,利用缓冲可以加快效率和速度
所有功能的操作都差不多:(1)读取文件信息(2)处理文件信息(3)将结果写入文件
下面是统计字符个数的代码

    public void  CountChars() throws IOException
    {
        BufferedInputStream input= new BufferedInputStream(
                new FileInputStream(this.input));
        BufferedOutputStream output=new BufferedOutputStream(
                new FileOutputStream(this.output,true));
        int count=0;
        int x=-1;
        char ch;
        while((x=input.read())!=-1) //流读取完的标志是返回-1  其他时候返回的为字符的ascii值
        {
            ch=(char)x;
            if(ch!='
'&&ch!='
')//换行
和回车
不统计为字符
            {
                count++;
            }
        }
        input.close();
        String str=this.input+",字符数:"+count;
        output.write(str.getBytes());
        output.write("
".getBytes()); //回车 /r和换行/n位置不可换
        output.flush();
        output.close();
    }

运行结果

心路历程与收获

在这次的项目中,我学习了如何用github管理代码,也学到了不少新知识。 我也接触到了PSP表格这种估计开发时间的方法,在项目开发的过程中开始有意识地估计和记录各项工作的时间。在完成Wordcount程序的开发的过程中,复习巩固了一些Java的知识,也锻炼了思考的能力。

原文地址:https://www.cnblogs.com/swaggy89/p/14610431.html