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 ...
随机推荐
- C#去除数组空格
static void Main(string[] args) { "}; Console.WriteLine("输出带有空字符串的数组:"); foreach (str ...
- JMS可靠性机制
1. 消息接收确认 JMS消息只有在被确认之后,才认为已经被成功的消费了,消息的成功消费通常包含三个阶段:客户接收消息,客户处理消息和消息被确认 在事务性会话中,当一个事务被提交的时候,确认自动发生. ...
- 终端启动tomcat报错 command not found 解决方法 (含启动和关闭命令)
Tomcat配置步骤: 1.cd命令进入Tomcat安装路径的bin下 2.sudo chmod 755*.sh 输入appleID密码获得相关权限 3.sudo sh ./startup.sh启动T ...
- 让memcached分布式
memcached是应用最广的开源cache产品,它本身不提供分布式的解决方案,我猜想一方面它想尽量保持产品简单高效,另一方面cache的key-value的特性使得让memcached分布式起来比较 ...
- PTA 说反话-加强版(20 分)(字符串处理)
说反话-加强版(20 分) 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串.字符串由若干单词和若干空 ...
- SQLSERVER 2008 查询数据字段名类型
SELECT * FROM Master..SysDatabases ORDER BY Name SELECT Name,* FROM Master..SysDatabases where Name= ...
- 安装ElasticSearch客户端Kibana
安装Kibana Kibana是一个为 ElasticSearch 提供的数据分析的 Web 接口.可使用它对日志进行高效的搜索.可视化.分析等各种操作. wget https://artifacts ...
- 小记一次mysql启动失败没有日志的处理
本来mysql好的,之前清理了一次tmp下的东西,mysql在查询的时候提示: Can't create/write to file '/tmp/ib0n3frL 然后停止启动: [root@sevc ...
- Python多线程-生产者消费者模型
用多线程和队列来实现生产者消费者模型 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import threading imp ...
- krpano之背景音乐
步骤: 1.添加音乐控制插件 <!-- START:音乐控制 --> <plugin name="soundinterface" url="%SWFPA ...