2016-11-16 54 views
0

我有一个输入文件,其中有主要分数和次要分数。我需要找到主要分数的平均值。来自输入文件的列表平均值

我可以读取主要和次要分数并将它们添加到列表中。但在计算平均值时,我在线上收到一个错误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; 
    } 
} 
+1

“我上线得到一个错误” ---编译错误或运行时异常? –

+1

什么是错误信息 –

+1

作为一个方面说明:您应该在使用它们后关闭'Stream's或将它们封装在'using'语句中。 – Jim

回答

0

Average被声明为静态方法调用,所以你eithr使用Regression.Average(PrimaryScore)调用它,或者你从方法定义中移除static修改等等你可以继续使用s1.Average(PrimaryScore)来调用它。

比如你的方法确定指标变成这样:

public static double Average(List PrimaryScore) 
{ 
    . 
    . 
    . 
+0

工作就像一个魅力。 如何显示平均值? –

+0

@KinjalMaruShah显示在控制台窗口中打印的平均值? 'Console.WrtieLine(s1.Average(PrimaryScore))'? –