如何合并两个整数数组并返回平均值?

时间:2019-05-31 01:57:26

标签: c#

好,所以我有两个整数数组,我必须返回这两天的平均评分。这是我到目前为止提出的代码,但是显然它没有达到期望。结果:

  

消息:预期:5.0天     但是是:3.0d

单位:

public double WeekendAverage(int[] saturday, int[] sunday)
    {
        int[] n = { saturday.Length, sunday.Length };
        int sum = 0;

        for (int i = 0; i < n.Length; i++)
        {
            sum = saturday[i] + sunday[i];
            return sum / n.Length;
        }
        return sum;
        }

UnitTest:

[TestCase(new[] { 1, 2, 3, 4, 5, 7, 8, 5, 10 }, new[] { 9, 9, 9, 8, 9, 8, 9, 9, 9, 10, 10 }, 7)]

public void WeekendAverage(int[] saturday, int[] sunday, double expected)
    {
        var actual = warmups.WeekendAverage(saturday, sunday);
        Assert.AreEqual(expected, actual);
    }

4 个答案:

答案 0 :(得分:3)

您可以使用System.Linq

var saturday = new[] { 1, 2, 3, 4, 5, 7, 8, 5, 10 };
var sunday = new[] { 9, 9, 9, 8, 9, 8, 9, 9, 9, 10, 10 };

var average = saturday.Concat(sunday).DefaultIfEmpty(0).Average();

答案 1 :(得分:1)

没有Linq。只需计算总和并除以合并数组的长度即可。

public double WeekendAverage(int[] saturday, int[] sunday)
{
    double sum = 0;
    for (int i = 0; i < saturday.Length; i++)
    {
        sum += saturday[i];
    }
    for (int i = 0; i < sunday.Length; i++)
    {
        sum += sunday[i];
    }
    return sum / (saturday.Length + sunday.Length);
}

答案 2 :(得分:0)

n的长度作为数组为2。您需要一个整数来存储两个数组长度的总和,而不是一个代表参数长度的整数数组。

在循环中将其更改为n = saturday.length + sunday.length和i

答案 3 :(得分:0)

使用Linq(根据Theodor的回答改编):

public double WeekendAverage(int[] saturday, int[] sunday)
{
    double sum = saturday.Sum() + sunday.Sum();
    return sum / (saturday.Length + sunday.Length);
}
相关问题