У меня есть входной файл, где у меня есть первичные баллы и дополнительные баллы. Мне нужно найти среднее значение первичных баллов.Среднее число из входного файла
Я могу прочитать первичный и вторичный баллы и добавить их в Списки. Но, вычисляя среднее значение, я получаю сообщение об ошибке на строке s1.Average (PrimaryScore);
Я использую классы program.cs и регрессии .cs. Спасибо за любую помощь.
class Program
{
static Regression s1;
static void Main(string[] args)
{
int numRecords = 0;
List<double> PrimaryScore = new List<double>();
List<double> SecondaryScore = new List<double>();
FileStream fs = null;
Console.Write("Enter the file path: ");
while (fs == null)
{
string fileName = Console.ReadLine();
fs = OpenFileForRead(fileName);
}
StreamReader sr = new StreamReader(fs);
ReadFirstValueAsInt(sr, ref numRecords);
sr.ReadLine();
for (int i = 1; i <= numRecords; i++)
{
ReadRecordAsDoubleList(sr, PrimaryScore);
ReadRecordAsDoubleList(sr, SecondaryScore);
Console.WriteLine("Primary Data set {0}: ", i);
foreach (double d in PrimaryScore)
Console.Write(d + " ");
Console.WriteLine();
Console.ReadLine();
PrimaryScore.Clear();
sr.ReadLine();
Console.WriteLine("Secondary Data set {0}: ", i);
foreach (double d in SecondaryScore)
Console.Write(d + " ");
Console.WriteLine();
Console.ReadLine();
SecondaryScore.Clear();
}
s1 = new Regression();
s1.Average(PrimaryScore); //getting an error here
}
public static FileStream OpenFileForRead(string fileName)
{
try
{
return new FileStream(fileName, FileMode.Open, FileAccess.Read);
}
catch (Exception e)
{
Console.Write("Problem opening file {0}, please enter a valid path: ", fileName);
}
return null;
}
public static void ReadFirstValueAsInt(StreamReader sr, ref int numRecords)
{
try
{
numRecords = Int32.Parse(sr.ReadLine());
}
catch (Exception e)
{
Console.Write(e.Message);
}
}
public static void ReadRecordAsDoubleList(StreamReader sr, List<double> cr)
{
try
{
string[] doubles = sr.ReadLine().Split(new char[] { ' ' });
foreach (string s in doubles)
cr.Add(Double.Parse(s));
}
catch (Exception e)
{
Console.Write(e.Message);
}
}
}
Регрессионный класса, который вызывается из программы класса
class Regression
{
public static double Average(List<double> PrimaryScore)
{
int sum = 0;
foreach (int element in PrimaryScore)
sum += element;
return (double)sum/PrimaryScore.Count;
}
}
«Я получаю сообщение об ошибке на линии» --- ошибка компиляции или исключение времени выполнения? –
Что такое сообщение об ошибке –
В качестве примечания стороны: вы должны закрыть 'Stream' после их использования или обернуть их в 'использование'. – Jim