WordCount
Posted ocapp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WordCount相关的知识,希望对你有一定的参考价值。
码云链接:https://gitee.com/ocapp/WordCount.git
解题思路:
看到这个题目,我想到的用先判断操作指令,然后将文件读入,以统计字符数的等信息,并将其写入到指定文件中,读写文件的操作用C#封装好的类很容易实现,
所以我决定用C#实现。
具体实现:
因为这个项目需要完成的操作比较简单,所以我写了两个类分别用于读文件和写文件。
读文件:
用一个char类型的c一个一个读入文件字符,读入一个则字符数+1,当遇到”,“和空格,则单词数+1,行数定义为只要分行,不管此行有无代码,即算一行,所以当字符c == “ ",
行数+1。
while((c =sr.Read()) != -1) //一个一个读取字符 { charNumber++; //没读一个字符,字符数+1 if ((char)c == ‘,‘ || (char)c == ‘ ‘) wordNumber++; //遇到逗号或者空格,单词数+1 if ((char)c == ‘ ‘) //遇到转行符,行数+1 lineNumber++; lst.Add((char)c); }
写文件:
用type[]数组存入判定指令,当指令出现,则执行相应操作并将结果输出到result.txt文件里
//type存入的是指令,分别是字符、单词和行数的标志 bool writeChar = false; //各种指令 bool writeWord = false; bool writeLine = false; LoadFile load = new LoadFile(); load.Load(filename); for(int i = 0;i < 3;i++) { if (type[0] == "c") //判断指令,如果指令为真,则将想要结果写入文件里 writeChar = true; if (type[1] == "w") writeWord = true; if (type[2] == "l") writeLine = true; }
在主函数里循环获得指令
for(int i = 0;i < 4;i++) //循环四次,每次获得一行指令 { line = Convert.ToString(Console.ReadLine()); if (line.Length < 10) { Console.WriteLine("出错"); break; } str = line.Substring(8, 1);//获取指令 if (str == "c") type[0] = str; if (str == "w") type[1] = str; if (str == "l") type[2] = str; if (str == "o") { break; } filename = line.Substring(10); }
测试用例:
测试文件是file.c 输出文件是result.txt
测试各个功能是否能够实现
结果:
错误输入指令,输出“出错”
测试ReadFile类
LoadFile reader = new LoadFile(); reader.Load("file.c"); Console.WriteLine(reader.charNumber); //输出文件的统计信息 Console.WriteLine(reader.wordNumber); Console.WriteLine(reader.lineNumber);
结果:
测试WirteFile类
string[] type = { "c", "w", "l" }; WriteFile write = new WriteFile(); write.Write("file.c", type); //传入指令和文件
结果:
以上是关于WordCount的主要内容,如果未能解决你的问题,请参考以下文章