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. Intellij idea常用快捷键和技巧

    一.常用快捷键 搜索 double shift 全文搜索内容 ctrl + shift + f 搜索文件 Ctrl + shift + n 打开项目窗口  Alt + 1 智能代码补全 Ctrl+Sh ...

  2. kibana从入门到精通-Kibana安装

    作者其他ELK快速入门系列文章 Elasticsearch从入门到精通 logstash快速入门实战指南 简介 Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之 ...

  3. datatables 配套bootstrap3样式使用小结(1)

    今天介绍汇总一下datatables. 网址: www.datatables.net 公司CMS内容资讯站的后台管理界面用了大量的table来管理数据,试用了之后,感觉挺不错,推荐一下. 先上一个基本 ...

  4. Perl的输出:print、say和printf、sprintf

    print.printf和say都可以输出信息.print和say类似,print不自带换行符,say自带换行符,但要使用say,必须写use语句use 5.010;,printf像C语言的print ...

  5. python安装Jieba中文分词组件并测试

    python安装Jieba中文分词组件 1.下载http://pypi.python.org/pypi/jieba/ 2.解压到解压到python目录下: 3.“win+R”进入cmd:依次输入如下代 ...

  6. Spring Boot 设置静态资源访问

    问题描述 当使用spring Boot来架设服务系统时,有时候也需要用到前端页面,当然就不可或缺地需要访问其他一些静态资源,比如图片.css.js等文件.那么如何设置Spring Boot网站可以访问 ...

  7. WPF Grid布局

    本节讲述布局,顺带加点样式给大家看看~单纯学布局,肯定是枯燥的~哈哈 那如上界面,该如何设计呢? 1.一些布局元素经常用到.Grid StackPanel Canvas WrapPanel等.如上这种 ...

  8. [android] 短信的广播接收者

    比较重要的一个广播事件,短信 界面布局,比如播放视频,默认是横屏全屏的,清单文件中进行设置, 在<activity/>节点设置屏幕朝向属性,android:screenOrientatio ...

  9. curl模拟请求常用参数

    封装一个curl模拟浏览器请求的函数,如下: /** * curl模拟浏览器请求 * @param unknown $url 请求的地址 * @param array $params 请求地址所需要的 ...

  10. C#字节图片互转、字节转换图片、图片转换字节、byte[]转换图片、图片转换成byte[]

    原文地址:http://www.cnblogs.com/wifi/articles/3522773.html /// <summary> /// 图片转换成字节流 /// </sum ...