github项目传送门:https://github.com/yanghuipeng/wc

项目要求

wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。

实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。

  • 基本功能列表
  1. -c    [文件名]  返回文件的字符数
  2. -w   [文件名]  返回文件词的数目
  3. -l     [文件名]  返回文件的行数 

PSP开发耗时

PSP2.1

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

30

40

· Estimate

· 估计这个任务需要多少时间

30

50

Development

开发

680

840

· Analysis

· 需求分析 (包括学习新技术)

100

180

· Design Spec

· 生成设计文档

60

100

· Design Review

· 设计复审 (和同事审核设计文档)

30

30

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

30

30

· Design

· 具体设计

120

80

· Coding

· 具体编码

200

300

· Code Review

· 代码复审

40

40

· Test

· 测试(自我测试,修改代码,提交修改)

100

80

Reporting

报告

80

80

· Test Report

· 测试报告

30

40

· Size Measurement

· 计算工作量

20

10

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

30

20

合计

900

1080

 

设计

思路:通过输入的命令来判断执行各个if函数,将输入的命令分割为两部分,第一部分是指令,第二部分是文件路径,用指令来判断需要执行的if函数,文件路径作为参数。

字符统计:按行读取文件,把每行的字符数相加;

词数统计:把读取的数据记录下来,把多行拼接为一行,用空格替代标点符号,然后根据空格切割;

行数统计函数:根据JAVA的readLine功能统计;

设计实现过程

用户使用说明

-c   [文件名]    返回该文件的字符数。

-w  [文件名]    返回该文件的代码词数。

-l   [文件名]    返回该文件的代码行数。

代码

项目目录:

主函数:

package wc;

import java.io.*;;

public class wcTest {

public static void main(String[] args) throws IOException {

// TODO 自动生成的方法存根

String inputFile = "";// 定义待读取文件目录

int charNum = 0; // 字符数

int wordNum = 0; // 单词数

int lineNum = 0; // 行数

System.out.println("**** -c   [文件名]  返回文件的字符数");

System.out.println("**** -w   [文件名]  返回文件词的数目");

System.out.println("**** -l   [文件名]  返回文件的行数");

System.out.println("请输入指令:");

InputStream iStream = System.in;

InputStreamReader inputStreamReader = new InputStreamReader(iStream);

BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

String str = bufferedReader.readLine();

String[] strings = str.split("\\s");

// 获取文件目录名

for (int i = 0; i < strings.length; i++) {

if (strings[i].endsWith(".java"))

inputFile = strings[i];

}

// 字符数统计

for (int i = 0; i < strings.length; i++) {

if (strings[i].equals("-c")) { // -c对应字符个数统计

BufferedReader bff = new BufferedReader(new FileReader(inputFile));

String str1;

String str2 = bff.readLine();

while ((str1 = str2) != null) {

charNum = charNum + str1.length();

charNum++;

if ((str2 = bff.readLine()) == null)

charNum--;

}

bff.close();

String file = inputFile;

file = file.substring(file.lastIndexOf("\\") + 1, file.length());

System.out.println(file + ",字符个数:" + charNum);

}

}

// 行数统计

for (int i = 0; i < strings.length; i++) {

if (strings[i].equals("-l")) { // -l对应字符行数统计

BufferedReader bff = new BufferedReader(new FileReader(inputFile));

while (bff.readLine() != null)

lineNum++;

bff.close();

String file = inputFile;

file = file.substring(file.lastIndexOf("\\") + 1, file.length());

System.out.println(file + ",文件总行数:" + lineNum );

}

}

// 单词数统计

for (int i = 0; i < strings.length; i++) {

if (strings[i].equals("-w")) { // -w对应字符个数统计

BufferedReader bff = new BufferedReader(new FileReader(inputFile));

StringBuffer sBuffer = new StringBuffer();

String str1;

while ((str1 = bff.readLine()) != null)

sBuffer = sBuffer.append(str1 + " ");

str1 = sBuffer.toString();

// 把中英文标点符号都替换为“ ”

String str2 = str1.replaceAll("[\\p{P}+~$`^=|<>~`$^+=|<>¥×]", " ");

String[] str3 = str2.split("\\s+");

wordNum = str3.length;

bff.close();

String file = inputFile;

file = file.substring(file.lastIndexOf("\\") + 1, file.length());

System.out.println(file + ",单词个数:" + wordNum);

}

}

}

}

测试运行

测试文件

测试结果

代码覆盖率

进行代码覆盖率测试

代码覆盖率:98.9%

 

总结

通过这次作业,我重新回顾了JAVA的知识,加深了对正则表达式的认知,也学会了代码覆盖率,对时间的安排,对功能的评估等知识,同时学会了使用Github。

java实现wc的更多相关文章

  1. 小白のjava实现wc.exe功能

    GitHub地址 项目完成情况 基本功能列表(已实现) wc.exe -c file.c     //返回文件 file.c 的字符数 wc.exe -w file.c    //返回文件 file. ...

  2. 个人项目:Java实现WC

    Java实现WC Github项目地址:https://github.com/auxshaw/WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个 ...

  3. JAVA实现WC.exe功能

    项目要求 实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他扩展功能,并能够快速地处理多个文件. 具体功能要求: 程序处理用户需求的模式为: wc.exe [paramet ...

  4. java实现wc.exe

    Github地址:https://github.com/ztz1998/wc/tree/master 项目相关要求 实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他扩展功 ...

  5. 软工作业No.1。Java实现WC.exe

    网址:https://github.com/a249970271/WC WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有w ...

  6. java实现WC项目

    个人项目:WC   wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数.单 ...

  7. 软件工程项目基于java的wc实现

    WC软件工程项目JAVA实现博客 github地址:https://github.com/liudaohu/myrepository.git 功能实现 ·    -w 统计单词数 -c 统计字符数 - ...

  8. Java 实现 WC.exe

    Github:https://github.com/YJOED/Code/tree/master/WC/src 一.题目:实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他 ...

  9. 软件工程:Java实现WC.exe基本功能

    项目相关要求 GitHub地址:https://github.com/3216004716/WC 实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他扩展功能,并能够快速地处 ...

随机推荐

  1. vue 国际化i18n 多语言切换

    安装 npm install vue-i18n 新建一个文件夹 i18n ,内新建 en.js zh.js index.js 三个文件 准备翻译信息 en.js export default { ho ...

  2. Workspace in use or cannot be created, choose a different one.错误的解决办法

    eclipse 或 myeclipse 使用一段时间后,有时会因为一些故障自己就莫名奇妙的关闭了,再打开时有时没有问题,有时有会提示错误: Workspace Unavailable: Workspa ...

  3. windows系统下发布python模块到pypi

    1. 在pypi.python.org网站注册一个用户,记住用户名和密码. 2. 编写需要上传模块的源代码,文件名为:skyersfirstpythonmodule.py 3. 新建文件夹,名称为sk ...

  4. solr(五): centos中, 整合 tomcat&solr

    前言 虽然windows下, tomcat和solr整合起来灰常的方便, 但是, 一般像这种东西, 都很少部署在windows中, 更多的是部署到linux中去. 其实, 步骤是一样的, 这里, 我在 ...

  5. mysql累积聚合

    累积聚合为聚合从序列内第一个元素到当前元素的数据,如为每个员工返回每月开始到现在累积的订单数量和平均订单数量 行号问题有两个解决方案,分别是为使用子查询和使用连接.子查询的方法通常比较直观,可读性强. ...

  6. TensorFlow中的并行执行引擎——StreamExecutor框架

    背景 [作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] 在前一篇文章中,我们梳理了TensorFlow中各种异构Device的添加和注 ...

  7. C#字符串。

    string类型不能被继承,它是密封类,sealed. 一.字符串的特性. 1.不可变性. class Program { static void Main(string[] args) { stri ...

  8. 服务器文档下载zip格式

    刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Core.Utility;@{ s ...

  9. T-SQL基础(四)之集合运算

    三个运算符 T-SQL支持三个集合运算符:UNION.INTERSECT.EXCEPT. 集合运算符查询的一般形式如下: Query1 <set_operator> Query2 -- 这 ...

  10. This relative module was not found (转载)

    vue踩坑-This relative module was not found 在使用vue.js的日期选择插件 的时候,报错如下   This relative module was not fo ...