WordCount

Posted dengfantao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WordCount相关的知识,希望对你有一定的参考价值。

Github项目地址:https://github.com/dft123/myhomework/tree/master/src/myhomework1

一、题目描述

  •  实现一个简单而完整的软件工具(源程序特征统计程序)。
  •  进行单元测试、回归测试、效能测试,在实现上述程序的过程中使用相关的工具。
  •  进行个人软件过程(PSP)的实践,逐步记录自己在每个软件工程环节花费的时间。

二、WC 项目要求

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

三、核心代码

package myhomework1;

import java.io.BufferedReader;
import java.io.File;

import java.io.FileReader;
import java.io.IOException;

public class WordCount2 {
    public static void main(String[] args) throws IOException {
        WordCount2Test wct = new WordCount2Test();
        wct.testWc();
        System.out.println("**************");
        wct.testWc2();
        System.out.println("**************");
        wct.testWc3();
        System.out.println("**************");
        wct.testWc4();
        System.out.println("**************");
        wct.testWc5();
    }

    public static void wc(char parameter, String file_name) throws IOException {
        File src = new File(file_name);

        switch (parameter) {
        case c:
            charcount(src);
            break;
        case w:
            wordcount(src);
            break;
        case l:
            linecount(src);
            break;
        default:
            break;
        }
    }

    // 统计行数
    public static int linecount(File src) throws IOException {
        int linenum = 0;
        if (src.exists()) {
            BufferedReader br = new BufferedReader(new FileReader(src));
            while (true) {

                if (br.readLine() == null)
                    break;
                else
                    linenum++;
            }
            br.close();
            System.out.println("文件" + src.getName() + "的行数为: " + linenum);
            return linenum;
        } else {
            System.out.println(src.getPath() + " 文件不存在!");
            return 0;
        }
    }

    // 统计字符数
    public static int charcount(File src) throws IOException {
        int charnum = 0;
        int a = 0;
        if (src.exists()) {
            BufferedReader br2 = new BufferedReader(new FileReader(src));
            while (a != -1) {

                a = br2.read();
                if (a >= 33 && a <= 126)
                    charnum++;
                else
                    continue;
            }
            br2.close();
            System.out.println("文件" + src.getName() + "的字符数为: " + charnum);
            return charnum;
        } else {
            System.out.println(src.getPath() + " 文件不存在!");
            return 0;
        }
    }

    // 统计词数
    public static int wordcount(File src) throws IOException {
        int wordnum = 0;
        int a = 0, flag = 0;
        if (src.exists()) {
            BufferedReader br2 = new BufferedReader(new FileReader(src));
            while (a != -1) {
                a = br2.read();
                if ((a >= a && a <= z) || (a >= A && a <= Z)) {
                    if (flag == 0)
                        flag = 1;
                } else {
                    if (flag == 1) {
                        wordnum++;
                        flag = 0;
                    } else
                        continue;
                }
            }
            br2.close();
            System.out.println("文件" + src.getName() + "的词数数为: " + wordnum);
            return wordnum;
        } else {
            System.out.println(src.getPath() + " 文件不存在!");
            return 0;
        }
    }
}

四、测试结果

技术图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

五、PSP

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 10

 20

· Estimate

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

720

 1450

Development

开发

 120

 200 

· Analysis

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

360

 480

· Design Spec

· 生成设计文档

 10

 10

· Design Review

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

 10

 10

· Coding Standard

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

 10

 30

· Design

· 具体设计

 30

 60

· Coding

· 具体编码

 100

200

· Code Review

· 代码复审

 10

 15

· Test

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

 30

 50

Reporting

报告

 10

 20

· Test Report

· 测试报告

 10

 10

· Size Measurement

· 计算工作量

 15

 0

· Postmortem & Process Improvement Plan

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

 15

 30

合计

 

740

 

1450

 

 

以上是关于WordCount的主要内容,如果未能解决你的问题,请参考以下文章

hadoop之WordCount源代码分析

Hadoop中WordCount代码-直接加载hadoop的配置文件

WordCount代码实现及测试

Hadoop- Wordcount程序原理及代码实现

wordcount代码实现详解

如何运行自带wordcount-Hadoop2