好,所以我有两个整数数组,我必须返回这两天的平均评分。这是我到目前为止提出的代码,但是显然它没有达到期望。结果:
消息:预期: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);
}
答案 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);
}