码迷,mamicode.com
首页 > 其他好文 > 详细

wordcount

时间:2018-03-20 22:56:30      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:输入   item   source   match   tput   sdn   rect   时间   hub   

一、github地址
github

二、PSP表格
技术分享图片

三、解题思路
刚拿到题目的时候,觉得这个作业应该很简单,以前做过相类似的计算单词的程序,但是阅读了需求之后,发现这个题目有很多不同的地方,而且很多需求的描述都是不清楚,那么只能自己摸索着前进,或者是询问其他同学的理解。
这个题目还有一个难点在于要求用java编写,而我对与java里面的文件操作等方面的东西不太熟悉,所以需要自己去查阅相关资料,学习新的知识,这里就耗费掉我大量的时间。

四、程序设计实现过程
使用java,将分为两个类,一个为main,一个为count;
main类主要用于获取输入的命令,count类主要用来处理相应的功能。
技术分享图片

五、代码说明
public static Vector

 if (args[i].equals("-o")) {
            i++;
            if (i == args.length) 
                return;
            outPath = args[i];
            
        }
        else if (args[i].equals("-s"))
            flag = true;
        else if (args[i].equals("-c") || args[i].equals("-w") || args[i].equals("-l") || args[i].equals("-a"))
            {
            instruction.addElement(args[i]);
            }
        else if(args[i].equals("-e"))
            {
            try {
                stopingList(args[i]);
            }
            catch (IOException e){
                System.out.println("找不到停用文件");
                return;
            }
            }
        else {
            if(!flag)
            sourcefile.addElement(new File(Path +args[i]));
            else
                recursionFiles(Path);
        }
使用一个vector来存储命令-c -w之类的

for (File f : files) {
if (f.isFile() && f.getName().endsWith(".c"))
sourcefile.addElement(f);
else if (f.isDirectory())
recursionFiles(f.getAbsolutePath());
}
对文件的递归查询。

public String countWord(int location) throws IOException {
    readFile(location);
    String s;
    wordNum = 0;
    while ((s = bufferReader.readLine()) != null) {
        if (Pattern.matches("\\s*", s))//匹配任何不可见字符
            continue;
        String[] word = s.split(" |,");//以空格,逗号,|进行分解,因此不会对于空格进行统计,与范例有点区别
        for (String l : word)
            if (!Pattern.matches("\\s*",l))
                wordNum++;
    }
    String result = sourcefilepath.get(location).getAbsolutePath().substring(filepath.length())
            + ", 单词数: " + String.valueOf(wordNum) + "\n";
    byte[] outputresult = result.getBytes();
    outputstream.write(outputresult);
    return result;
}
这里使用到了java中的正则表达式的匹配,pattern的调用,简化了对字符串的判断。

六、测试设计
-c file1.c
-w file2.c
-l file3.c
-c file4.c -o outputfile.txt
-a file5.c
-c -a file6.c -o outputfile.txt
-w –a file7.c
-l –w file8.c
-l –s file9.c -o outputfile.txt
-l –e stoplist.c

七、参考文献
1.java.util.regex.Pattern类的使用
2.JAVA正则表达式 Pattern和Matcher
3.正则表达式的使用
4.java中的文件操作
5.java中的文件流的操作

wordcount

标签:输入   item   source   match   tput   sdn   rect   时间   hub   

原文地址:https://www.cnblogs.com/youchenyu/p/8612843.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!