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