JAVA实现WC

 

github地址:https://github.com/shoulder01/wc.git

一、项目相关要求

     wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。

二、功能实现

 基本功能

计算文件的字符数             (实现)

计算文件的词的数目          (实现)

计算文件 的行数                (实现)

 


扩展功能:
统计文件代码行     (实现)

统计文件 空行        (实现)

统计文件注释行      (实现)

未实现的要求:分别用参数命令返回各结果

 

三、psp表格

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 30

 40

· Estimate

· 估计这个任务需要多少时间

 60

 50

Development

开发

 150

 180

· Analysis

· 需求分析 (包括学习新技术)

 100

 120

· Design Spec

· 生成设计文档

 40

 50

· Design Review

· 设计复审 (和同事审核设计文档)

 30

 30

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

 40

 40

· Design

· 具体设计

 60

 60

· Coding

· 具体编码

 250

 300

· Code Review

· 代码复审

 50

 90

· Test

· 测试(自我测试,修改代码,提交修改)

 80

 120

Reporting

报告

 150

 150

· Test Report

· 测试报告

 30

 30

· Size Measurement

· 计算工作量

 40

 50

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

 150

 190

合计

 

 1260

 1500

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

四、代码说明

1、计算文件字符数,行数,单词数

 

private static void listNext(File file) throws IOException { 
InputStreamReader isr=new InputStreamReader(new FileInputStream(file));
BufferedReader br=new BufferedReader(isr);
/**
* 计算文件字符数,行数,单词数
*/
while((br.read())!=-1)
{
String s=br.readLine();
charNum+=s.length();
wordsNum+=s.split(" ").length;
lineNum++;    
}
isr.close();
}

 

2、统计文件代码行,注释行,空行

 

 1 private static void fileLine(File f) throws IOException{
 2 String strLine = "";
 3 String str = fromFile(f);
 4 if (str.length() > 0) {
 5 while (str.indexOf('\n') != -1) { 
 6 
 7 strLine = str.substring(0, str.indexOf('\n')).trim();
 8 if (strLine.charAt(0) == '/' || strLine.charAt(0) == '*') {
 9 commentsNum++;
10 }else{
11 sourceNum++;
12 String regEx = ".*\\/\\/.*";
13 if(regEx(strLine,regEx)){ 
14 commentsNum++;
15 }    
16 else if (strLine.length() == 0 ) {
17 blankNum++;
18 }
19 }
20 str = str.substring(str.indexOf('\n') + 1, str.length());
21 
22 }
23 } 
24 }

 

3、主函数

 

 1 public static void main(String[] args) throws IOException {
 2         File directory = new File("");
 3         Scanner input=new Scanner(System.in);
 4         System.out.println("请输入文件路径:");
 5         String path=input.next();
 6         listNext(new File(path));
 7         fileLine(new File(path));
 8         fromFile(new File(path));
 9         System.out.println("总行数:"+lineNum);
10         System.out.println("字符数:"+charNum);
11         System.out.println("单词数:"+wordsNum);
12         System.out.println("代码行数:"+sourceNum);
13         System.out.println("空白行数:"+blankNum);
14         System.out.println("注释行数:"+commentsNum);
15     }

 

五、测试结果

 

六、总结

 接到这个作业的第一反应就是“好难,不会”,可能这和自己对java和c语言不是很熟悉,因为慢慢对打代码失去了兴趣。不过作业还是要完成,只能硬着头皮上。其间查找了很多的例子去看,也找了书本温习之前学过的知识。过程在也得到了同学的帮助,才勉强完成了不分要求。虽然没能把这次作业完成得很好,但自己起码去做了,多少是有收获的。这次作业也让自己知道自己真的要把java和c语言捡起来,逼自己学,能学多少是多少。往后也要多向同学们学习。

posted @ 2018-09-14 22:23  shoulder01  阅读(192)  评论(0编辑  收藏  举报