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小结的更多相关文章

  1. 从零开始编写自己的C#框架(26)——小结

    一直想写个总结,不过实在太忙了,所以一直拖啊拖啊,拖到现在,不过也好,有了这段时间的沉淀,发现自己又有了小小的进步.哈哈...... 原想框架开发的相关开发步骤.文档.代码.功能.部署等都简单的讲过了 ...

  2. Python自然语言处理工具小结

    Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...

  3. java单向加密算法小结(2)--MD5哈希算法

    上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符 ...

  4. iOS--->微信支付小结

    iOS--->微信支付小结 说起支付,除了支付宝支付之外,微信支付也是我们三方支付中最重要的方式之一,承接上面总结的支付宝,接下来把微信支付也总结了一下 ***那么首先还是由公司去创建并申请使用 ...

  5. iOS 之UITextFiled/UITextView小结

    一:编辑被键盘遮挡的问题 参考自:http://blog.csdn.net/windkisshao/article/details/21398521 1.自定方法 ,用于移动视图 -(void)mov ...

  6. K近邻法(KNN)原理小结

    K近邻法(k-nearst neighbors,KNN)是一种很基本的机器学习方法了,在我们平常的生活中也会不自主的应用.比如,我们判断一个人的人品,只需要观察他来往最密切的几个人的人品好坏就可以得出 ...

  7. scikit-learn随机森林调参小结

    在Bagging与随机森林算法原理小结中,我们对随机森林(Random Forest, 以下简称RF)的原理做了总结.本文就从实践的角度对RF做一个总结.重点讲述scikit-learn中RF的调参注 ...

  8. Bagging与随机森林算法原理小结

    在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合. ...

  9. scikit-learn 梯度提升树(GBDT)调参小结

    在梯度提升树(GBDT)原理小结中,我们对GBDT的原理做了总结,本文我们就从scikit-learn里GBDT的类库使用方法作一个总结,主要会关注调参中的一些要点. 1. scikit-learn ...

随机推荐

  1. EEPlat PaaS中的多租户数据隔离模式

    EEPlat PaaS支持三种租户的数据隔离技术:Sparce Column.tenantId字段隔离.每一个租户独立数据库. 1)Sparce Column,和Salesforce Appforce ...

  2. 程序设计基石与实践系列之编写高效的C程序与C代码优化

    原文出处: codeproject:Writing Efficient C and C Code Optimization 虽然对于优化C代码有非常多有效的指导方针,可是对于彻底地了解编译器和你工作的 ...

  3. Yocto tips (15): Yocto中的包管理器

    使用包管理器 在local.conf中使能就可以: 然后编译后就会有rpm包了: 配置文件server 能够使用ngix和apache.可是我们也能够仅仅用使用python: python -m Si ...

  4. 从fork面试题開始的思考

    一.文章来由 还是按照惯例来说一下文章为什么来的.晚上好基友在网上刷面试题,看到一个有趣的题目,于是開始了研究,就有了这篇文章. 二.进入正题 题目例如以下: #include <stdio.h ...

  5. IOS开发的哪些异常之异常断点

    从Android开发的异常报错到IOS的异常闪退,经历了不一样的处理过程.对于IOS的异常报错刚開始总是非常茫然,永远仅仅告诉你有异常.然后就跳到main.m文件,却不曾我告诉她在那出现.真是吊人胃口 ...

  6. 使用具体解释及源代码解析Android中的Adapter、BaseAdapter、ArrayAdapter、SimpleAdapter和SimpleCursorAdapter

    Adapter相当于一个数据源,能够给AdapterView提供数据.并依据数据创建相应的UI.能够通过调用AdapterView的setAdapter方法使得AdapterView将Adapter作 ...

  7. BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第10章节--SP2013中OAuth概览 创建和管理应用程序身份

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第10章节--SP2013中OAuth概览  创建和管理应用程序身份         在之前的部分.你看到应用程序怎样像用 ...

  8. ASMlib操作系统包安装与配置asm disk磁盘

    1.加入6块硬盘,每块100g.不管是热加还是冷加.不管是加硬盘,用san存储划lun,或者再加上多路径,都是能够这么做的. 在操作系统层,能识别这种lun.以下的sdb就是一个刚划分的300g的lu ...

  9. hive查询不加分区的一个异常

    今天下午有同事反馈她提交了了一个SQL后,hive 查询就停止响应了. 我看了下,发现hiveserver确实hug住了.听过查看日志,发现了一个牛逼的SQL, 这个SQL很简单: select a. ...

  10. Intellij使用"easyexplore"

    刚开始接触Intellij,里面有很多东西还不太会用,平时在eclipse里面用的很方便的easyexplore能帮助快速打开文件目录,Intellij中本身就有这样的功能,只是默认没有开启,需要我们 ...