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 ...
随机推荐
- 微信开发出现 redirect-uri參数错误原因是设置回调页面域名不要加HTTP://
OAuth2.0 网页授权设置.回调页面域名不要加HTTP:// NND 微信的研发.你程序处理下非常麻烦吗?给个提示非常麻烦吗?让我查了1个多小时.
- css中使用id和class 的不同
在 CSS 中,类选择器以一个点号显示: .center {text-align: center} 在上面的样例中,全部拥有 center 类的 HTML 元素均为居中. 在以下的 HTML 代码中, ...
- 可能是东半球最全的RxJava使用场景小结
一.Scheduler线程切换 这样的场景常常会在"后台线程取数据,主线程展示"的模式中看见 Observable.just(1, 2, 3, 4) .subscribeOn(Sc ...
- SVN过滤设置
为了方便管理我们的系统版本号.非常多人会用到SVN,开发中我们经经常使用到SVN插件, 可是对于某些文件的缓存来说, 我们仅仅要有操作缓存便会保存一次, 每次提交非常是麻烦, 可能有的文件或者目录我们 ...
- Linux 文件系统初步
在Linux系统中,假设我们想要知道一个文件的详细信息,那么最简便的方法自然就是ls命令了.例如以下图所看到的:当在shell输入命令"ls -l old"时,在下方就会 ...
- IP地址的规划和设计方法(二)
五,IP地址规划方法 (1)IP地址规划的基本步骤 网络地址规划须要按下面6步进行: a)推断用户对网络与主机数的需求: ...
- zzulioj--1804--ZY学长的密码(字符串)
1804: ZY学长的密码 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 140 Solved: 53 SubmitStatusWeb Board ...
- matplotlib 可视化 —— 移动坐标轴(中心位置)
通常软件绘图,包括 matlab.python 的 matplotlib,默认都是将坐标轴置于画布(figure)的最下侧(x 轴),最左侧(y 轴),也即将坐标原点置于左下角.而我们自己理解数学,以 ...
- pycaffe 可视化常用
net.params['layername'].[0]/[1] caffe的一个程序跑完之后会在snapshot所指定的目录下产生一个后缀名为caffemode的文件,这里存放的就是我们在训练网络的时 ...
- 【转】 基于C#.NET的高端智能化网络爬虫 2
[转] 基于C#.NET的高端智能化网络爬虫2 本篇故事的起因是携程旅游网的一位技术经理,豪言壮举的扬言要通过他的超高智商,完美碾压爬虫开发人员,作为一个业余的爬虫开发爱好者,这样的言论我当然不能置之 ...