我正在嘗試編寫一個讀取文本文件的程序,按字符對其進行排序,並跟蹤每個字符在文檔中出現的次數。這是我迄今爲止所擁有的。對文本文件中的字符進行計數/排序
class Program
{
static void Main(string[] args)
{
CharFrequency[] Charfreq = new CharFrequency[128];
try
{
string line;
System.IO.StreamReader file = new System.IO.StreamReader(@"C:\Users\User\Documents\Visual Studio 2013\Projects\Array_Project\wap.txt");
while ((line = file.ReadLine()) != null)
{
int ch = file.Read();
if (Charfreq.Contains(ch))
{
}
}
file.Close();
Console.ReadLine();
}
catch (Exception e)
{
Console.WriteLine("The process failed: {0}", e.ToString());
}
}
}
我的問題是,這裏的if語句應該怎麼辦?
我也有一個Charfrequency類,我將在這裏包括以防萬一它包含在它的幫助/必要中(並且是的,我需要使用數組而不是列表或數組列表)。
public class CharFrequency
{
private char m_character;
private long m_count;
public CharFrequency(char ch)
{
Character = ch;
Count = 0;
}
public CharFrequency(char ch, long charCount)
{
Character = ch;
Count = charCount;
}
public char Character
{
set
{
m_character = value;
}
get
{
return m_character;
}
}
public long Count
{
get
{
return m_count;
}
set
{
if (value < 0)
value = 0;
m_count = value;
}
}
public void Increment()
{
m_count++;
}
public override bool Equals(object obj)
{
bool equal = false;
CharFrequency cf = new CharFrequency('\0', 0);
cf = (CharFrequency)obj;
if (this.Character == cf.Character)
equal = true;
return equal;
}
public override int GetHashCode()
{
return m_character.GetHashCode();
}
public override string ToString()
{
String s = String.Format("'{0}' ({1}) = {2}", m_character, (byte)m_character, m_count);
return s;
}
}
你讀char的char?爲什麼如果你有ReadLine()調用? –
readline不應該存在,它是更早的剩餘代碼形式。 – Cheeseop
爲什麼不只是做一個「strbob = .ReadToEnd()」,然後通過strbob.length - strbob.replace(strloopchar).length()將字符集循環並放入數組? –