java实现wc
2021-06-28 14:05
标签:add [] ngx new 任务 使用 str bsp 类方法 GitHub地址:https://github.com/Huangxuming10/wc/tree/master/WC/src/WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。 基本要求 ? -c [filename]统计文件字符数(实现) 扩展功能 PSP PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 · Estimate · 估计这个任务需要多少时间 Development 开发 · Analysis · 需求分析 (包括学习新技术) · Design Spec · 生成设计文档 · Design Review · 设计复审 (和同事审核设计文档) · Coding Standard · 代码规范 (为目前的开发制定合适的规范) · Design · 具体设计 · Coding · 具体编码 · Code Review · 代码复审 · Test · 测试(自我测试,修改代码,提交修改) Reporting 报告 · Test Report · 测试报告 · Size Measurement · 计算工作量 · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 合计 解题思路 功能:-c [filename]统计文件字符数 实现:逐行读取文件,直到文件读取完毕,计算所有字符数目,去掉每行空字符后,统计个数,累加 功能:-w [filename]统计文件词数 实现:逐行读取文件,判断是否为字符,累加字符串数组长度,直到文件读取完毕 功能:-l [filename]统计文件行数 实现:逐行读取文件,每读取一行,行数加一,直到文件读取完毕 设计实现 运行程序,main方法启动,系统显示使用说明,再通过用户键入得到命令,读取输入命令内容,判断命令和文件路径是否正确,然后用switch语句读取命令,判断命令,调用各类方法实现各个功能。 代码说明 main函数 显示使用说明,数据的输入输出处理,使用nextLine实现命令的提取,使用split分割命令,调用方法实现功能 public static void main (String[] args) throws IOException { do { System.out.println("请输入命令:"); try { } 实现-c\-w\-l 读取文件,计算所有字符数目,判断为字符,字符数chars加一,逐行读取文件,若遇到换行符,这行数lines加一,读取文件,以空格为条件判断为一个词,词的数目words加一 int chars=0; FileInputStream f=new FileInputStream(file); //读取文件 } } 运行测试 测试一个字符的文件
测试一个词的文件 测试一个源文件 项目小结 1.对于java语言比较陌生,很多知识点都忘了,很多时候都是靠百度来解决问题,然后不断来理解其中代码,明确到搜索资料的重要性 2.对于Git、GitHub有了初步的了解,对于单元测试不太懂。 3.此次项目是软件工程的第一次项目,总的来说感觉自己做的有些仓促,许多细节的地方还有优化的空间,还有一些扩展功能可以实现,但是没有足够的时间。 java实现wc 标签:add [] ngx new 任务 使用 str bsp 类方法 原文地址:https://www.cnblogs.com/Huangxuming/p/9649161.html
-w [filename]统计文件词数(实现)
-l [filename]统计文件行数(实现)
-s [filename]递归处理目录下符合条件得文件
-a [filename]返回文件代码行 / 空行 / 注释行
? 支持各种文件的通配符(*,?)
高级功能
-x 图形化界面
30
40
30
30
120
180
150
240
60
150
60
120
60
120
60
80
400
600
60
90
60
60
120
150
120
90
30
60
60
120
1420
1930
System.out.println("-c [文件路径] 返回文件字符数");
System.out.println("-w [文件路径] 返回文件词数");
System.out.println("-l [文件路径] 返回文件行数");
Scanner m=new Scanner(System.in); //读取输入的命令
String n=m.nextLine(); //读取输入命令
String arr[]=n.split("\\s"); //读取输入命令的每一个以空格为间隔的单词
File file=new File(arr[1]);
switch (arr[0]) {
case "-c":System.out.println("字符数:"+chars);break; //返回文件字符数
case "-w":System.out.println("词数:"+words);break; //返回文件词数
case "-l":System.out.println("行数:"+lines);break; //返回文件行数
default:System.out.println("输入命令错误!");break; //返回发生错误
}
} catch (Exception e) {
System.out.println("发生错误:文件读入发生异常!");
}
int words=1;
int lines=1;
int a=0;
Boolean b=false;
String c="\t\n\r";
while ((a=f.read())!=-1) {
chars++;
if(a==‘\n‘) {
lines++;
if(c.indexOf(a)!=-1) {
if(b) {
words++;
b=false;
}
else {
b=true;
}
}
上一篇:最大网络流算法
下一篇:python—面向对象设计