【问题标题】:Average of List from input file输入文件列表的平均值
【发布时间】:2016-11-16 02:01:45
【问题描述】:

我有一个输入文件,其中包含主要分数和次要分数。我需要找到初级分数的平均值。

我能够读取主要和次要分数并将它们添加到列表中。但是在计算平均值时,我在 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;
    }
}

【问题讨论】:

  • '我在线出错'---编译错误还是运行时异常?
  • 错误信息是什么
  • 附带说明:您应该在使用它们后关闭Streams 或将它们包装在using 语句中。

标签: c# list average


【解决方案1】:

Average 被声明为静态方法,因此您要么使用 Regression.Average(PrimaryScore) 调用它,要么从方法定义中删除 static 修饰符,以便继续使用 s1.Average(PrimaryScore) 调用它。

比如你的方法定义变成这样:

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

【讨论】:

  • 工作就像一个魅力。如何显示平均值?
  • @KinjalMaruShah 在控制台窗口上显示打印的平均值? Console.WrtieLine(s1.Average(PrimaryScore)) ?
猜你喜欢
  • 2014-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多