Я пытаюсь написать программу, которая читает текстовый файл, сортирует его по символу и отслеживает, сколько раз каждый символ появляется в документе. Это то, что у меня есть до сих пор.Подсчет/сортировка символов в текстовом файле
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, который я буду включать здесь, если это полезно/необходимо, чтобы я включил его (и да, необходимо, чтобы я использовал массив против списка или arraylist).
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? И так, почему, если у вас есть вызов ReadLine()? –
Литература не должна быть там, она является прежней формой кода раньше. – Cheeseop
Почему вы просто не делаете «strbob = .ReadToEnd()», а затем просто перебираете набор символов с помощью strbob.length - strbob.replace (strloopchar) .length() и помещаете в массив? –