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 webpack配置解决跨域问题

    现在基本项目都是实行前后端分离的原则,不管是ng 或者是vue 在开发中都无法避免跨域的这个问题 本人刚上手第一个vue项目,在调用api的时候出现了跨域的这个问题 这是封装好一个简单的post 请求 ...

  2. kafka和storm集群的环境安装

    前言 storm和kafka集群安装是没有必然联系的,我将这两个写在一起,是因为他们都是由zookeeper进行管理的,也都依赖于JDK的环境,为了不重复再写一遍配置,所以我将这两个写在一起.若只需一 ...

  3. maven 聚合工程 用spring boot 搭建 spring cloud 微服务 模块式开发项目

    项目的简单介绍: 项目采用maven聚合工程 用spring boot 搭建 spring cloud的微服务 模块式开发 项目的截图: 搭建开始: 能上图 我少打字 1.首先搭建maven的聚合工程 ...

  4. spring-boot(二)

    学习文章来自:http://www.ityouknow.com/spring-boot.html web开发 spring boot web开发非常的简单,其中包括常用的json输出.filters. ...

  5. Docker容器Tomcat部署war包

    在docker容器中使用tomcat部署war包主要包括四个步骤,创建tomcat容器.上传war包到容器.重启容器.访问应用. 1.创建tomcat容器 使用docker run  -d --nam ...

  6. MySQL系列详解五: xtrabackup实现完全备份及增量备份详解-技术流ken

    xtrabackup简介 xtrabackup是一个用来对mysql做备份的工具,它可以对innodb引擎的数据库做热备.xtrabackup备份和还原速度快,备份操作不会中断正在执行的事务,备份完成 ...

  7. sqoop安装及使用

    简介: sqoop是一款用于hadoop和关系型数据库之间数据导入导出的工具.你可以通过sqoop把数据从数据库(比如mysql,oracle)导入到hdfs中:也可以把数据从hdfs中导出到关系型数 ...

  8. 微服务框架Lagom介绍之一

    背景 Lagom是JAVA系下响应式 微服务框架,在阅读本文之前请先阅读微服务架构设计,Lagom与其他微服务框架相比,与众不同的特性包括: 目前,大多数已有的微服务框架关注于简化单个微服务的构建-- ...

  9. [angularjs] angularjs系列笔记(八)事件

    AngularJs有自己的HTML事件 ng-click指令 ng-click指令定义了AngularJs点击事件 当点击按钮的时候,赋值count变量并且给count变量加1,显示出count变量 ...

  10. jsp引入本地图片

    jsp引入本地图片 通用解决方法: 在tomcat的server.xml配置文件中,在<host></host>标签中间添上一句 <!-- docBase : 磁盘绝对路 ...