c# - 获取数组的平均值

标签 c# arrays

我有一个作业,用户必须输入姓名,然后输入分数,然后重复该过程直到完成,按 Q,然后数组将显示姓名和分数,然后给出平均分所有这些分数。我现在拥有的是这个。

    static void inputPartInformation(string[] pl, double[] sc)
    {

        int i = 0;

        do
        {
            Console.Write("Enter The Player's Name: ");

            pl[i] = Console.ReadLine();


            Console.Write("Enter Their Score: ");

            sc[i] = double.Parse(Console.ReadLine());

        }
        while (pl[i++].CompareTo("Q") != 0);

    }


    static void displayParts(string[] pl, double[] sc)
    {
        int i = 0;
        while (pl[i].CompareTo("Q") != 0)
        {
            Console.WriteLine("{0,15}{1,6}", pl[i], sc[i]);
            ++i;
        }

    }

    static void Main(string[] args)
    {

        String[] players = new String[100];

        double[] scores = new double[100];

        inputPartInformation(players, scores);



        displayParts(players, scores);


        double average = scores.Average();
        Console.WriteLine("The Average is: {0}", average);



        Console.ReadLine();

    }

当我尝试对分数进行平均时,结果不正确。

最佳答案

问题出在 Average 的调用上:您正在计算所有内容的平均值,而不是相应 names“Q” 之前的所有内容位置。您将未写入的分数部分中的所有这些零加在一起,然后将其除以 100 - 整个数组的长度。

解决此问题的最简单方法是从 inputPartInformation 方法返回 "Q" 条目的位置:

var count = inputPartInformation(players, scores);

现在您可以使用 LINQ 的 Take 函数来获得正确的平均值:

double average = scores.Take(count).Average();

关于c# - 获取数组的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11979321/

相关文章:

c# - 我应该让我的对象属性可以为 null 还是为每种类型使用 CLR 默认值?

java - 从嵌套的 for 循环返回一个变量

javascript - 如何传递和读取字符串数组作为 url 参数以及如何在 javascript 中读取查询参数?

c# - 在 Windows 中安全地存储密码

javascript - 访问名称中具有特定值的特定数组

c - 使用 SWIG,取消引用指向 TCL 变量的 C 数组指针

c - c程序的程序输出

c# - 我有两个窗口窗体,我想一个接一个地打开它们

c# - 在 MVC 中生成组织图并在 View 中显示

c# - 如何测试一个值是否是 ObservableCollection<T> 的实例?