wordcontent小结
gitee地址:
https://gitee.com/yzpdegit/test
问题描述:
计算一个文件中所包含的单词数,字符个数,行数
需求分析:
WordCount的需求可以概括为:对程序设计语言源文件统计字符数、单词数、行数,统计结果以指定格式输出到默认文件中,以及其他扩展功能,并能够快速地处理多个文件。
可执行程序命名为:wc.exe,该程序处理用户需求的模式为:
wc.exe [parameter] [input_file_name]
存储统计结果的文件默认为result.txt,放在与wc.exe相同的目录下。
解题思路:
首先选取的语言是用Java来进行开发的,读取文件需要用到java中的io流,通过创建通道来读取文件中的数据然后当作字符串来进行处理,通道建立好以后利用循环,当read()每
次读取一行循环一次,直到读取完毕,计算字符的个数即为直接计算字符串的长度,计算单词的个数则可以利用匹配模式,将字符串切割,当遇到逗号和空格时,将他们截断,
然后两者相加再减一就行,最后行数就判断循环了多少次就行。
psp表格:
|
PSP2.1 |
PSP阶段 |
预估耗时 (分钟) |
实际耗时 (分钟) |
|
Planning |
计划 |
10 |
15 |
|
· Estimate |
· 估计这个任务需要多少时间 |
20*60 |
10*60 |
|
Development |
开发 |
60 |
84 |
|
· Analysis |
· 需求分析 (包括学习新技术) |
30 |
30 |
|
· Design Spec |
· 生成设计文档 |
30 |
20 |
|
· Design Review |
· 设计复审 (和同事审核设计文档) |
10 |
10 |
|
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
30 |
30 |
|
· Design |
· 具体设计 |
50 |
40 |
|
· Coding |
· 具体编码 |
20 |
20 |
|
· Code Review |
· 代码复审 |
10 |
10 |
|
· Test |
· 测试(自我测试,修改代码,提交修改) |
60 |
50 |
|
Reporting |
报告 |
40 |
60 |
|
· Test Report |
· 测试报告 |
30 |
30 |
|
· Size Measurement |
· 计算工作量 |
10 |
10 |
|
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
25 |
25 |
|
合计 |
415 |
424 |
代码展示:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
这段代码里面的表示需要的导入的包后面要用到的包都在这里去找
public class Main {
public static void main(String[] args)throws IOException {
int word=0;
int character=0;
int length=0;
Scanner in=new Scanner(System.in);
System.out.println("输入文件路劲:");
String path=in.next();
InputStreamReader input=new InputStreamReader(new FileInputStream(path));
BufferedReader br=new BufferedReader(input);
while(br.read()!=-1)
{
String s=br.readLine();
word+=s.split(",").length-1+s.split(" ").length;
character+=s.length()+s.split(" ").length-1;
length++;
}
input.close();
在这里面输入要读取的文件,创建通道链接文件,将内容读取出来,然后利用循环遍历完文件,边遍历变计算
File result=new File("output.txt");
result.createNewFile();
BufferedWriter bd=new BufferedWriter(new FileWriter(result));
bd.write(path+",单词数:"+word);bd.newLine();
bd.write(path+",字符数:"+character);bd.newLine();
bd.write(path+",行数数:"+length);bd.newLine();
bd.flush();
bd.close();
将结果输入到output.txt文件里
测试用例 :





测试结果:

心得体会:
第一次写博客感觉还不错,对于博客的编写有了很大的认识,其次,在这次的开发中用到了gitee来对项目进行管理,让我对项目的整合方面有了很大的
提升 ,再开发的过程中我发现和以往的开发有很大的区别,首先,以前都注重于敲代码,这次的中心却放到了分析规划上面,但是本次的开发也有很大
的不足,对于测试用例的分析还不是很到位,下次希望能好一点。
wordcontent小结的更多相关文章
- 从零开始编写自己的C#框架(26)——小结
一直想写个总结,不过实在太忙了,所以一直拖啊拖啊,拖到现在,不过也好,有了这段时间的沉淀,发现自己又有了小小的进步.哈哈...... 原想框架开发的相关开发步骤.文档.代码.功能.部署等都简单的讲过了 ...
- Python自然语言处理工具小结
Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...
- java单向加密算法小结(2)--MD5哈希算法
上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符 ...
- iOS--->微信支付小结
iOS--->微信支付小结 说起支付,除了支付宝支付之外,微信支付也是我们三方支付中最重要的方式之一,承接上面总结的支付宝,接下来把微信支付也总结了一下 ***那么首先还是由公司去创建并申请使用 ...
- iOS 之UITextFiled/UITextView小结
一:编辑被键盘遮挡的问题 参考自:http://blog.csdn.net/windkisshao/article/details/21398521 1.自定方法 ,用于移动视图 -(void)mov ...
- K近邻法(KNN)原理小结
K近邻法(k-nearst neighbors,KNN)是一种很基本的机器学习方法了,在我们平常的生活中也会不自主的应用.比如,我们判断一个人的人品,只需要观察他来往最密切的几个人的人品好坏就可以得出 ...
- scikit-learn随机森林调参小结
在Bagging与随机森林算法原理小结中,我们对随机森林(Random Forest, 以下简称RF)的原理做了总结.本文就从实践的角度对RF做一个总结.重点讲述scikit-learn中RF的调参注 ...
- Bagging与随机森林算法原理小结
在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合. ...
- scikit-learn 梯度提升树(GBDT)调参小结
在梯度提升树(GBDT)原理小结中,我们对GBDT的原理做了总结,本文我们就从scikit-learn里GBDT的类库使用方法作一个总结,主要会关注调参中的一些要点. 1. scikit-learn ...
随机推荐
- windows 下面的grep awk 命令
windows 下面的grep awk 命令 grep 学习了:http://blog.csdn.net/chengfans/article/details/53784936 awk学习了:http: ...
- spark 类标签的稀疏 特征向量
一个向量(1.0,0.0,3.0)它有2中表示的方法 密集:[1.0,0.0,3.0] 其和一般的数组无异 稀疏:(3,[0,2],[1.0,3.0]) 其表示的含义(向量大小,序号,值 ...
- ZooKeeper Recipes and Solutions
原文地址:http://zookeeper.apache.org/doc/current/recipes.html 参考:https://zookeeper.apache.org/doc/trunk/ ...
- Android中的Junit测试
在开发中Junit测试可以很方便的帮助开者尽可能早的发现并处理问题,而且使用也非常简单,只需要导入Junit测试相关的jar包并创建测试类,就可以对业务功能进行测试,而不用为了测试在代码中添加输出语句 ...
- PostgreSQL Replication之第三章 理解即时恢复(2)
3.2 归档事务日志 看过图片之后,我们可以看看如何使这些东西进入工作状态.当谈到及时归档时,您需要做的第一件事是归档XLOG.PostgreSQL通过postgresql.conf提供了所有与归档相 ...
- vue中makeMap方法的使用 (定义注册一些值 后期方便使用)
function makeMap ( str, expectsLowerCase ) { var map = Object.create(null); var list = str.split(',' ...
- win10 的MQTT + apache-apollo服务器使用
我的使用环境是windows10 2.下载文件目录(注意:开始看教程说直接打开bin目录下的apollo.cmd文件,闪退,原因是没有java_home环境,必须添加java环境): 3.安装好jav ...
- php时间戳转化成时间相差8小时问题
php时间戳 转化成时间的时候 $mytime=time(); echo $mytime.'<br />'; echo date('Y-m-d H:i:s',$mytime); 会产生8个 ...
- python读取word文档
周末需要做一个统计word文档字数的问题,刚开始以为很简单,因为之前做过excel表格相关的任务,所以认为利用扩展模块应该比较简单. 通过搜索,确实搜到了一个python操作word的模块,pytho ...
- blongsTo 用法
当存在这样两张表的时候: one{ , 'name':"name" 'sex':"sex" } two{ , 'type':json } 当我们需要在调用到 o ...