java实现wc
2021-06-30 05:05
标签:except while 报告 img stat 测试 order 认知 eal github项目传送门:https://github.com/yanghuipeng/wc wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。 实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。 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
if (strings[i].endsWith(".java")) inputFile = strings[i]; } // 字符数统计 for (int i = 0; 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
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
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。 java实现wc 标签:except while 报告 img stat 测试 order 认知 eal 原文地址:https://www.cnblogs.com/yhp1106/p/9643495.html项目要求
PSP开发耗时
设计
设计实现过程
用户使用说明
代码
测试运行
代码覆盖率
总结