C# - 从文本文件中读取数字并输出平均值

时间:2016-06-20 16:59:56

标签: c#

我看过以前的帖子,没有人能找到我正在寻找的答案。 我是C#的新手,试图让这个小应用程序运行起来。 我有一个名为“hours.txt”的文件,里面有30个数字,我想读取文件并输出平均值和最高数字,但我似乎无法让它工作。我已经尝试将数组更改为字符串,但我真的很想知道如何让它工作。任何帮助或提示将不胜感激。

        int[] hoursArray = new int[30];
        StreamReader fileSR = new StreamReader("hours.txt");
        int counter = 0;                                             
        string line = "";            
        line = fileSR.ReadLine();            
        while (line != null)
        {
            hoursArray[counter] = line;
            counter = counter + 1;
            line = fileSR.ReadLine();
        }
        fileSR.Close();    

        int total = 0;
        double average = 0;
        for (int index = 0; index < hoursArray.Length; index++)
        {
            total = total + hoursArray[index];
        }
        average = (double)total / hoursArray.Length;

        int high = hoursArray[0];
        for (int index = 1; index < hoursArray.Length; index++)
        {
            if (hoursArray[index] > high)
            {
                high = hoursArray[index];
            }
        }
        Console.WriteLine("Highest number is: " + high);
        Console.WriteLine("The average is: " + average);
        Console.ReadLine();

2 个答案:

答案 0 :(得分:2)

这是错误的,因为你将字符串放入int位置。

hoursArray[counter] = line;

首先将字符串解析为int。

hoursArray[counter] = int.Parse(line);

答案 1 :(得分:1)

作为替代方法,使用LINQ,代码可以用更简洁的代码替换:

string[] lines = System.IO.File.ReadAllLines("hours.txt");
int[] values = lines.Select((l) => int.Parse(l)).ToArray();
double average = values.Average();
int peak = values.Max();