用java写wordcount

码云地址:https://gitee.com/Huan62201/events;

个人PSP表格:


PSP2.1


PSP阶段


预估耗时

(分钟)


实际耗时

(分钟)


Planning


计划


270


180


· Estimate


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


180


120


Development


开发


580


400


· Analysis


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


180


60


· Design Spec


· 生成设计文档


40


30


· Design Review


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


20


20


· Coding Standard


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


20


10


· Design


· 具体设计


20


20


· Coding


· 具体编码


180


200


· Code Review


· 代码复审


30


40


· Test


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


90


60


Reporting


报告


90


70


· Test Report


· 测试报告


40


30


· Size Measurement


· 计算工作量


20


10


· Postmortem & Process Improvement Plan


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


30


30


合计


850


630

一、功能需求分析

  WordCount的需求可以概括为:对程序设计语言源文件统计字符数、单词数、行数,统计结果以指定格式输出到默认文件中,以及其他扩展功能,并能够快速地处理多个文件。可执行程序命名为:wc.exe,该程序处理用户需求的模式为:

wc.exe [parameter] [input_file_name]

存储统计结果的文件默认为testCase.txt,放在与wc.exe相同的目录下。

详细:

wc.exe -c file.c     //返回文件 file.c 的字符数

wc.exe -w file.c     //返回文件 file.c 的单词总数

wc.exe -l file.c     //返回文件 file.c 的总行数

wc.exe -o outputFile.txt     //将结果输出到指定文件outputFile.txt

注意:

空格,水平制表符,换行符,均算字符。

由空格或逗号分割开的都视为单词,且不做单词的有效性校验,例如:thi#,that视为用逗号隔开的2个单词。

-c, -w, -l参数可以共用同一个输入文件,形如:wc.exe –w –c file.c 。

-o 必须与文件名同时使用,且输出文件必须紧跟在-o参数后面,不允许单独使用-o参数。

二、程序设计

A:大概设计

    1):程序由主函数和方法构成。

       2):程序使用main的入口参数。

B:详细设计

  1):将每个指令对应一个方法。

     2):将功能方法写在一个主函数的方法里。

     3):使用条件判断语句来处理输入的命令。

三.java代码

主要代码

WordCount WC=new WordCount(0,0,0);
        String inputFile="file.c";
        String stopFlie="stopFile.txt";
        String outputFile="result.txt";
        for(int i=0;i<args.length;i++){
            if(args[i].endsWith(".c"))
                inputFile=args[i];
            if(args[i].equals("-e"))
                stopFlie=args[i+1];
            if(args[i].equals("-o"))
                outputFile=args[i+1];
        }

        WC.wc(inputFile);

        for(int i=0;i<args.length;i++)
        {
            switch(args[i]){
            case "-c":{
                System.out.println(inputFile+",字符数:" + WC.getCharCount());
                break;
            }
            case "-w":{
                System.out.println(inputFile+",单词数:" + WC.getWordCount());
                break;
            }
            case "-l":{
                System.out.println(inputFile+",行数:" + WC.getLineCount());
                break;
            }
            case "-o":{
                String outText="";
                for(int j=0;j<args.length;j++){
                    if(args[j].equals("-c"))
                        outText=outText+"\r\n"+inputFile+",字符数:" + WC.getCharCount();
                    if(args[j].equals("-w"))
                        outText=outText+"\r\n"+inputFile+",单词数:" + WC.getWordCount();
                    if(args[j].equals("-l"))
                        outText=outText+"\r\n"+inputFile+",行数:" + WC.getLineCount();
                    }
                File writename = new File(outputFile); // 相对路径,如果没有则要建立一个新的output.txt文件
                writename.createNewFile();
                BufferedWriter out = new BufferedWriter(new FileWriter(writename));
                out.write(outText);
                out.flush();
                out.close();
                break;
            }
            }
        }
    }

 //统计行数
    public void wc(String inputFile) throws IOException{
        String lineString = null;
        String[] buffer;
        File dir=new File(inputFile);
        BufferedReader bf = new BufferedReader(new FileReader(dir)); // 读取文件
        while((lineString=bf.readLine())!=null){
            buffer=lineString.split(",| "); //遇到 , 空格 就结束赋值
            for(int i=0;i<buffer.length;i++){
                if(!buffer[i].equals(""))
                    wordCount++;
            }
            lineCount++;
            charCount+=lineString.length();
            }
            bf.close();
    }
}

四.测试用例

1.在命令行执行程序

用例测试结果

六.参考链接

http://lengbingteng-163-com.iteye.com/blog/1115568

Java如何读取Resources目录下的文件:

https://blog.csdn.net/oschina_40188932/article/details/78833754

运行exe时报错:

http://www.cnblogs.com/smileinwind/p/9370054.html

用eclipse如何将java程序生成一个.exe可运行文件?

https://blog.csdn.net/u011677147/article/details/42262815

原文地址:https://www.cnblogs.com/huanxin/p/9696407.html

时间: 2024-10-06 19:52:20

用java写wordcount的相关文章

Spark:用Scala和Java实现WordCount

为了在IDEA中编写scala,今天安装配置学习了IDEA集成开发环境.IDEA确实很优秀,学会之后,用起来很顺手.关于如何搭建scala和IDEA开发环境,请看文末的参考资料. 用Scala和Java实现WordCount,其中Java实现的JavaWordCount是spark自带的例子($SPARK_HOME/examples/src/main/java/org/apache/spark/examples/JavaWordCount.java) 1.环境 OS:Red Hat Enterp

用java写一个远程视频监控系统,实时监控(类似直播)我想用RPT协议,不知道怎么把RPT协议集成到项目中

我最近在用java写一个远程视频监控系统,实时监控(类似直播)我想用RPT协议,不知道怎么把RPT协议集成到项目中,第一次写项目,写过这类项目的多多提意见,哪方面的意见都行,有代码或者demo的求赏给我,谢谢

用Java写的爬虫程序

这是一个web查找的根本程序,从命令行输入查找条件(开端的URL.处置url的最大数.要查找的字符串), 它就会逐一对Internet上的URL进行实时查找,查找并输出匹配查找条件的页面. 这个程序的原型来自<java编程艺术>, 为了非常好的剖析,站长去掉了其间的GUI有些,并稍作修改以适用jdk1.5.以这个程序为基础,可以写出在互联网上查找 比如图像.邮件.页面下载之类的"爬虫". 先请看程序运转的进程: D:\java>javac  SearchCrawler

使用Java写定时器

Java编写处理定时任务主要用到的类是java.util.Timer和java.util.TimerTask: 如下几行代码就可以实现一个具有定时执行任务的定时器: import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Timer; import java.util.TimerTask; import MailSender.MailSe

kafka集群搭建和使用Java写kafka生产者消费者

 kafka集群搭建 Java代码   1.zookeeper集群  搭建在110, 111,112 2.kafka使用3个节点110, 111,112 修改配置文件config/server.properties broker.id=110 host.name=192.168.1.110 log.dirs=/usr/local/kafka_2.10-0.8.2.0/logs 复制到其他两个节点,然后修改对应节点上的config/server.pro 3.启动,在三个节点分别执行 bin/kaf

java写的迷宫代码

迷宫代码:截图如下:package com.zxl.maze; /* * 抽象类表示选择不同的算法*/ public abstract class AbstractMap { /* * 得到数据*/ public abstract boolean[][] getData(int m,int n); /* * 重置*/ public abstract void reset(int m,int n); } package com.zxl.maze; /* *深度优先,生成迷宫*/ import ja

用JAVA写一个视频播放器

前言 跳过废话,直接看正文 当年入坑java是因为它的跨平台优势.那时我认为,"编写一次,处处运行."这听上去多么牛逼,应该是所有语言发展的终极之道,java势必会一统天下. 然而事实证明,那时的我还是太年轻. 正所谓鱼和熊掌不可兼得,若要享受跨平台带来的方便,便不可避免地要接受性能上的不足.事实上,java一直在致力于提高虚拟机的性能(JIT等技术),但面对对实时计算性能要求很高或涉及到用硬件优化的任务(视频的硬件编码.解码)时,仍远远比不上c或c++.因此,很少能够看到有人用jav

安卓开发 调用java写的jax-ws 格式的webservices

public static final String NAME_SPACE = "http://webService.sxthnet/"; public static String URL = "http://100.123.68.166:8080/wbs1/Server1Port"; public static String Method2="sayhello2"; public final String Action2=NAME_SPACE+

用java写 java1,1,2,4,7,13,24,44算法

//用java写 java1,1,2,4,7,13,24,44算法 ---- 百度知道 import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Result { // 前三个数 private int a = 1, b = 1, c = 2; private List<Integer> list = null; // 构造方法 Result() { list = new