BinaryTom

导航

软件工程(第三周)

  用了VS,现学了一波C#,感觉和JAVA差不多。与是就用C#把单词统计的程序写了一下。

  废话不多说,先上代码。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace Text_Screen
 8 {
 9     /**
10      * 用于统计文档中的字符,单词,以及行数
11      */
12     class CharStatistics
13     {
14         private int charCount;  //用于记录字符数
15         private int wordCount;  //用于记录单词数
16         private int lineCount;  //用于记录行数
17 
18         public CharStatistics() {
19             this.SetChar(0);
20             this.SetWord(0);
21             this.SetLine(0);
22         }
23 
24         public void IncreaseChar()
25         {
26             this.charCount++;
27         }
28 
29         public void IncreaseWord()
30         {
31             this.wordCount++;
32         }
33 
34         public void IncreaseLine()
35         {
36             this.lineCount++;
37         }
38 
39         public void SetChar(int charCount)
40         {
41             this.charCount = charCount;
42         }
43 
44         public void SetWord(int wordCount)
45         {
46             this.wordCount = wordCount;
47         }
48 
49         public void SetLine(int LineCount)
50         {
51             this.lineCount = LineCount;
52         }
53 
54         public int GetChar()
55         {
56             return this.charCount;
57         }
58 
59         public String ToString()
60         {
61             String a = null;
62             a = "字符数:" + this.charCount + "\n单词数:" + this.wordCount + "\n行数:" + this.lineCount;
63             return a;
64         }
65     }
66 }
CharStatistics

  这是第一个类,功能类似于一个计数器吧。可以统计文本里面的字符(包括空格和符号),单词数,行数.

 

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.IO;
 6 using System.Threading.Tasks;
 7 
 8 namespace Text_Screen
 9 {
10     class TextFromFile
11     {
12         public const string fileName = "MyFile.txt";
13         private CharStatistics myCharStatistics = new CharStatistics();
14         private String myString;
15 
16         /**
17          * 把文件里的所有字符输入到myString
18          * 打印myString里面的字符
19          * 返回myString
20          */
21         public String StringFromFile()
22         {
23             myCharStatistics = new CharStatistics();
24             myCharStatistics.SetLine(1);
25             if (!File.Exists(fileName))
26             {
27                 Console.WriteLine("{0}文件不存在!",fileName);
28                 return null;
29             }
30 
31             StreamReader myStreamReader = new StreamReader(fileName);
32 
33             myString = myStreamReader.ReadToEnd();
34             Console.Write(myString + "\n");
35             return myString;
36         }
37 
38         /*
39          * 统计字符串中的字符(包括空格和一些其他符号)
40          * 统计字符串中单词,行数
41          */
42         public void CountText() {
43             int i = 1;
44             while (i < myString.Length)
45             {
46                 if ((myString[i-1] >= 'a' && myString[i-1] <= 'z') || (myString[i-1] >= 'A' && myString[i-1] <= 'Z'))
47                 {
48                     //这是一个字母
49                     if ( !((myString[i] >= 'a' && myString[i] <= 'z') || (myString[i] >= 'A' && myString[i] <= 'Z')))
50                     {
51                         myCharStatistics.IncreaseWord();
52                     }
53                     myCharStatistics.IncreaseChar();
54                     i++;
55                     if (i == myString.Length)
56                     {
57                         myCharStatistics.IncreaseWord();
58                     }
59                 }
60                 else
61                 {                    
62                     //这是一个符号
63                     if (myString[i-1] == '\n')
64                     {
65                         myCharStatistics.IncreaseLine();
66                         i++;
67                     }
68                     else
69                     {
70                         myCharStatistics.IncreaseChar();
71                         i++;
72                     }
73                 }
74             }
75             
76             Console.Write(myCharStatistics.ToString());
77         }
78 
79         /*
80          * 判断字符串中文件是否为空
81          * 返回一个布尔值
82          */
83         public bool IsStringNull() {
84             if (myString == null)
85             {
86                 return true;
87             }
88             else {
89                 return false;
90             } 
91         }
92     }
93 }
TextFromFile

  第二个类,也可以说是这个程序的主体类.里面的方法主要有如下几个:

  1. 从文档中读取字符串到myString.
  2. 统计字符串中的各项数据:字符,单词,行.
  3. 判断myString是否为空,返回一个布尔值.

   

 1 namespace Text_Screen
 2 {
 3     class Program
 4     {
 5         static void Main(string[] args)
 6         {
 7             TextFromFile myTextFile = new TextFromFile();
 8             myTextFile.StringFromFile();
 9             if (myTextFile.IsStringNull())
10             {
11                 Console.Write("文件为空");
12             }
13             else{
14                 myTextFile.CountText();
15             }
16         }
17     }
18 }
main

  main函数,生成一个TextFromFile类的对象并实例化,调用方法统计数据.

  

  因为是程序用的是Ascll字符集,所以并不能支持Unicode,导致注释部分全部为"???"

  这次作业就先写到这吧.

posted on 2016-03-23 10:37  BinaryTom  阅读(202)  评论(0编辑  收藏  举报