java实现wc

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。

原文地址:https://www.cnblogs.com/yhp1106/p/9643495.html

时间: 2024-08-30 15:13:05

java实现wc的相关文章

小白のjava实现wc.exe功能

GitHub地址 项目完成情况 基本功能列表(已实现) wc.exe -c file.c     //返回文件 file.c 的字符数 wc.exe -w file.c    //返回文件 file.c 的词的数目 wc.exe -l file.c      //返回文件 file.c 的行数 扩展功能(已实现) -s   递归处理目录下符合条件的文件.    -a   返回更复杂的数据(代码行 / 空行 / 注释行). 空行:本行全部是空格或格式控制字符,如果包括代码,则只有不超过一个可显示的

java实现wc.exe的基本功能

 版权声明:本文为博主原创文章,转载请声明. 今天用java实现了wc.exe的基本功能,感觉还是蛮简单的,重点是读取字符串时候,空格也会读取进去,如果不处理一下的话,空格也会算进字符里面.. 需要注意的是,如果是中文的话,java会算两个两个字节读取.所以这个代码只能统计英文. 代码如下: package demo2; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; impo

Java实现WC基本功能

GitHub仓库:https://github.com/douyazai/WCbase 一.WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数.单词数和行数. 实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他扩展功能,并能够快速地处理多个文件.具体功能要求:程序处理用户需求的模式为: wc.exe [parameter] [f

java实现WC项目

个人项目:WC   wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数.单词数和行数. GitHub地址:https://github.com/lllhhhyyy/mygit 基本功能列表 -c    [文件名]  返回文件的字符数(实现) -w   [文件名]  返回文件词的数目(实现) -l     [文件名]  返回文件的行数(实现) 扩展功能列表 -s   递归处

Java实现WC.exe功能

1 WC 项目要求 项目地址:https://github.com/LIBULULU/yy wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数.单词数和行数. 实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他扩展功能,并能够快速地处理多个文件. 具体功能要求: 程序处理用户需求的模式为: wc.exe [parameter] [file_na

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

WC软件工程项目JAVA实现博客 github地址:https://github.com/liudaohu/myrepository.git 项目相关要求 ·         [编程语言]不限 ·         [项目设计]分析并理解题目要求,独立完成整个项目,并将最新项目发布在Github上. ·         [项目测试]使用单元测试对项目进行测试,并使用插件查看测试分支覆盖率等指标. ·         [源代码管理]在项目实践过程中需要使用Github管理源代码,代码有进展即签入Gi

个人小项目——Java实现WC功能

这个小项目用了两种方法解决了该功能的实现. 1.两种方法的功能和具体实现 代码可以成功运行,但是有一些情况考虑不完整,一种方法用了FileOutputStream输出流,为了解决空格无法统计问题,对文本实现一次重写,用String类的replace方法将空格用其他字符替换,然后可以实现字母数,单词数和行数的统计.另一种方法没有重新写文本,直接在缓冲区中处理文本,除上面三个之外还统计了空格数,字符总数和标点符号数. 2.优缺点比较 方法一可以统计出空行,而方法二由于是使用bufferedReade

Java实现wc部分功能

GitHub仓库:https://github.com/TaoTaoLv1/WcProject 一.开发前PSP表格预估* PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 30 30 · Estimate · 估计这个任务需要多少时间 30 30 Development 开发 464 655 · Analysis · 需求分析 (包括学习新技术) 20 30 · Design Spec · 生成设计文档

软件工程实践一 —— java之wc.exe

SoftwareEngineering-wc github项目地址:https://github.com/CuiLam/SoftwareEngineering-wc 项目相关要求 实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他扩展功能,并能够快速地处理多个文件. 具体功能 -c 返回文件字符数 -w 返回词的数目 -l 返回行数 扩展功能 -s 递归处理目录下符合条件的文件 -a 返回更复杂的数据(代码行 / 空行 / 注释行) 高级功能 -x 命令行输入-x参数