java实现wc功能
github项目地址:https://github.com/3216004717/ruanjiangongcheng.git
项目相关要求
基本要求
- wc.exe -c file.c //返回文件 file.c 的字符数(实现)
- wc.exe -w file.c //返回文件 file.c 的词的数目(实现)
- wc.exe -l file.c //返回文件 file.c 的行数(实现)
解题思路
- 困难描述
- 对于正则表达式的使用不太熟悉,所以在考虑统计单词数时花了很长时间
- 对main函数的参数不理解
- 做过哪些尝试
- 搜索与正则表达式的有关资料,然后自己尝试了很多匹配规则,发现很多情况都没有考虑到
- 在同学的指导下理解了main方法参数的含义
- 有何收获
- 回顾了之前学过的一些知识点,io流,正则表达式
- 接触到一些新知识,比如说使用单元测试,上传到guihub等等
设计实现过程
- 每个功能用一个方法实现,把所有方法封装成一个工具类
代码说明
- 统计字符数
- 先用isFile()方法判断传进来的参数是否有误
- 每次读取一行,统计每行字符串的长度
- 直到readLine()==null结束
- 输出结果
public static void countChar(String filepath) throws IOException {
File file = new File(filepath);
if (file.isFile()) {
BufferedReader br = new BufferedReader(new FileReader(file));
int count = 0;
String str = null;
while ((str = br.readLine()) != null) {
count+=str.length();
}
System.out.println(file.getName()+"的字符个数为:" + count);
br.close();
}else {
System.out.println("文件不存在");
}
- 统计单词数
- 先用isFile()方法判断传进来的参数是否有误
- 每次读取一行,用split(" ").length统计一行的单词数
- 直到readLine()==null结束
- 输出结果
public static void countWord(String filepath) throws IOException {
File file = new File(filepath);
if (file.isFile()) {
BufferedReader br = new BufferedReader(new FileReader(file));
int count = 0;
String line = null;
while ((line = br.readLine()) != null) {
count+=line.trim().split(" ").length;
}
System.out.println(file.getName()+"的单词个数为:" + count);
br.close();
}else {
System.out.println("文件不存在");
}
}
- 统计行数
- 先用isFile()方法判断传进来的参数是否有误
- 每次读取一行,若br.readLine() != null,则count++
- 直到readLine()==null结束
- 输出结果
public static void countLine(String filepath) throws IOException {
File file = new File(filepath);
if (file.isFile()) {
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
int count = 0;
while (br.readLine() != null) {
count++;
}
System.out.println(file.getName()+"的行数为:" + count);
br.close();
}else {
System.out.println("文件不存在");
}
}
- main函数
- 用args[]获取从命令行传进来的参数
- 执行switch语句调用对应方法
public static void main(String[] args) throws IOException {
String param = args[0];
switch (param) {
case "-c":
CountUtils.countChar(args[1]);
break;
case "-w":
CountUtils.countWord(args[1]);
break;
case "-l":
CountUtils.countLine(args[1]);
break;
default:
System.out.println("参数有误");
}
}
- 测试类
public class CountUtilsTest {
@Test
public void testCountChar() throws IOException{
CountUtils.countChar("test/1.txt");
CountUtils.countChar("test/2.txt");
CountUtils.countChar("test/3.txt");
}
@Test
public void testCountWord() throws IOException{
CountUtils.countWord("test/1.txt");
CountUtils.countWord("test/2.txt");
CountUtils.countWord("test/3.txt");
}
@Test
public void testCountLine() throws IOException{
CountUtils.countLine("test/1.txt");
CountUtils.countLine("test/2.txt");
CountUtils.countLine("test/3.txt");
}
}
测试运行
- 测试结果

- 代码覆盖率

PSP
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 30 | 50 |
| · Estimate | · 估计这个任务需要多少时间 | 30 | 50 |
| Development | 开发 | 660 | 670 |
| · Analysis | · 需求分析 (包括学习新技术) | 120 | 100 |
| · Design Spec | · 生成设计文档 | 30 | 30 |
| · Design Review | · 设计复审 (和同事审核设计文档) | 30 | 30 |
| · Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 30 | 30 |
| · Design | · 具体设计 | 30 | 60 |
| · Coding | · 具体编码 | 300 | 240 |
| · Code Review | · 代码复审 | 30 | 60 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 60 | 120 |
| Reporting | 报告 | 150 | 160 |
| · Test Report | · 测试报告 | 90 | 120 |
| · Size Measurement | · 计算工作量 | 30 | 20 |
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 20 |
| 合计 | 840 | 880 |
项目小结
这次项目只实现了基本功能,可能因为对项目所用到的知识不太了解,还有就是以前学过的知识也基本忘记,所以做起来有点难度,分析功能时也考虑了很多种情况,但最后实现出来的结果很一般。
java实现wc功能的更多相关文章
- 个人小项目——Java实现WC功能
这个小项目用了两种方法解决了该功能的实现. 1.两种方法的功能和具体实现 代码可以成功运行,但是有一些情况考虑不完整,一种方法用了FileOutputStream输出流,为了解决空格无法统计问题,对文 ...
- 小白のjava实现wc.exe功能
GitHub地址 项目完成情况 基本功能列表(已实现) wc.exe -c file.c //返回文件 file.c 的字符数 wc.exe -w file.c //返回文件 file. ...
- JAVA实现WC.exe功能
项目要求 实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他扩展功能,并能够快速地处理多个文件. 具体功能要求: 程序处理用户需求的模式为: wc.exe [paramet ...
- 软件工程—WC功能实现 (JAVA)
软件工程-WC功能实现(JAVA) Github项目地址:https://github.com/Ousyoung/wc 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和 ...
- java实现wc
github项目传送门:https://github.com/yanghuipeng/wc 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程 ...
- 个人项目:Java实现WC
Java实现WC Github项目地址:https://github.com/auxshaw/WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个 ...
- 【Java EE 学习 21 下】【 使用易宝支付接口实现java网上支付功能】
一.网上支付分为两种情况,一种方法是使用直接和银行的支付接口,另外一种方法是使用第三方支付平台和银行对接完成支付. 1.直接和银行对接. 2.使用第三方支付平台 3.常见的第三方支付平台 二.使用易宝 ...
- 【Servlet】java web 文件下载功能实现
需求:实现一个具有文件下载功能的网页,主要下载压缩包和图片 两种实现方法: 一:通过超链接实现下载 在HTML网页中,通过超链接链接到要下载的文件的地址 <!DOCTYPE html> & ...
- Java 7 新增功能
Java 7 新增功能如下: 对二进制整数的支持,以0b或0B开头. 在数值中可以使用下划线,不管是整型数值,还是浮点型数值,都可以自由地使用下划线,这样可以直观地分辨数值常量中到底包含多少位.如:3 ...
随机推荐
- TCP/IP/HTTP
一.什么是TCP连接的三次握手 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1 ...
- ORACLE常识
1. ORACLE中查看表中的外键来源于哪些表 select cl.table_name from user_cons_columns cl left join user_constraints c ...
- C# 32位程序访问64位注册表
接上文:http://www.cnblogs.com/TaiYangXiManYouZhe/p/5086974.html 上代码: RegistryKey localKey; if (Environm ...
- fatal: read error: Connection reset by peer解决办法
标签(空格分隔): ceph源码安装,git 问题描述: 源码安装ceph,克隆代码时提示如下错误: [root@localhost ~]# git clone git://github.com/ce ...
- datatables ajax异步分页
$('#sample_1').dataTable({ "sAjaxSource": "../table/data", // "bProcessing& ...
- Android BindService中遇到的一个小问题
今天在使用BindService的时候遇到个小问题,我希望通过Bindservice获取到这个服务,然后执行服务内的某个自定义方法,如下: if(bindService==null){ Intent ...
- Proxmark3笔记(一)
Kali下使用Proxmark3 apt-get update apt-get install build-essential libreadline5 libreadline-dev libusb- ...
- hive函数
内置函数 测试各种内置函数的快捷方法: 1.创建一个dual表 create table dual(id string); 2.load一个文件(一行,一个空格)到dual表 3.select sub ...
- jaxb 专题一(JAXB 实现java对象与xml之间互相转换)
首先熟悉一下JAXB实现对象与xml互转时常用的一些注解使用: 1.@XmlRootElement,用于类级别的注解,对应xml的跟元素.通过name属性定义这个根节点的名称. 2.@XmlAcces ...
- QR 码的位置检测符
QR码的位置检测符由三个同心正方形叠加而成.分别为: 7*7 modules的黑色正方形: 5*5 modules的白色正方形 : 3*3modules的黑色正方形. 三个用于定位检测的“回”形符号应 ...