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. 好用的shell可以事半功倍

    程序员离不开shell,一个好用的shell可以事半功倍,推荐zsh以及一些插件 # install zsh $ brew install zsh # install a framework, we ...

  2. mysql 开发基础系列11 存储引擎memory和merge介绍

    一. memory存储引擎 memoery存储引擎是在内存中来创建表,每个memory表只实际对应一个磁盘文件格式是.frm.   该引擎的表访问非常得快,因为数据是放在内存中,且默认是hash索引, ...

  3. java字符流操作flush()方法及其注意事项

    java字符流操作flush()方法及其注意事项   flush()方法介绍 查阅文档可以发现,IO流中每一个类都实现了Closeable接口,它们进行资源操作之后都需要执行close()方法将流关闭 ...

  4. MySQL导入导出实践

    最近一次数据迁移,需要将MySQL的数据导出.处理后导入到新表和ES.这里做个简单记录,方便后续查询. 注: 为了写文章方便及隐私安全,实际内容会有所简化.例如表结构简化.数据库连接部分全部用 xxx ...

  5. 图片预览(适用于IE6,9,10,Firefox)

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  6. TensorflowSharp安装和使用入门

    Tensorflow是一个人工智能框架.TensorflowSharp是对Tensorflow C语言版接口的封装,便于C#开发人员在项目中使用Tensorflow. 一.使用方法 Tensorflo ...

  7. leetcode — combination-sum

    import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Source : https://o ...

  8. 从2PC到Paxos

    在分布式系统中,一个事务可能涉及到集群中的多个节点.单个节点很容易知道自己执行的事务成功还是失败,但因为网络不可靠难以了解其它节点的执行状态(可能事务执行成功但网络访问超时). 若部分节点事务执行失败 ...

  9. 翻译wiki(一):Bios boot partition

    文章翻译自wiki,水平有限,若有错万请见谅.原文:https://en.wikipedia.org/wiki/BIOS_boot_partition BIOS boot partition是一个分区 ...

  10. Perl:undef类型和defined()函数

    undef和defined()函数 undef表示的像是数据库中的"null".它表示空,啥也没有,是完全未定义的.这不等于字符串的空,不等于数值0,它是另一种类型. 在某些时候, ...