[英]C# checking if next value in array is null
此代码循环遍历整数数组,将当前索引处的 int 与下一个索引 (i + 1) 处的 int 相加,然后求出它们的平均值(除以 2)。 然后将此双精度附加到双精度数组。 但是,当我到达数组的末尾时,由于没有超出最后一个值的值,因此会发生错误。 我以为我可以检查一下值是否为 null 但错误是事先发生的。 错误发生在第 15 行“if (numbers[i + 1].= null)”。
using System;
using System.Collections;
using System.Linq;
public class Test
{
public static double[] Averages(int[] numbers)
{
double[] averageArray = new double[0];
for (int i = 0; i < numbers.Length; i++)
{
double sum = 0;
double avg = 0;
if (numbers[i + 1] != null)
{
sum += numbers[i] + numbers[i + 1];
avg = sum / 2;
}
averageArray = averageArray.Append(avg).ToArray();
}
return averageArray;
}
public static void Main()
{
int[] testArray1 = { 2, 2, 2, 2 };
Console.WriteLine(Averages(testArray1));
}
}
好的,所以,您的代码需要考虑几件事。 你现在如何拥有它会抛出一个超出范围的异常。
你永远不应该在你的 int 数组中有一个 null object 所以这不是你需要做的检查。
如果需要它接受空值,则需要将其声明为int?[]
你现在拥有代码的方式是 output \ 返回值是一个包含 5 个值的数组,当你有 4 个值时
2, 2, 2, 1, 0
void Main()
{
int[] testArray1 = { 2, 2, 2, 2, };
Console.WriteLine(Averages(testArray1));
}
public static double[] Averages(int[] numbers)
{
double[] averageArray = new double[0];
for (int i = 0; i <= numbers.Length; i++)
{
double sum = 0;
double avg = 0; // This will cause a last object to be added to your array
if (i == numbers.Length - 1) // This adds the last item, this also needs to have order or preference as this would also then cause a Index Out of Range Exception
{
sum += numbers[i];
}
else if(i <= numbers.Length -1) // This adds all items that are not the last item in the array
{
sum += numbers[i] + numbers[i + 1];
}
avg = sum / 2;
averageArray = averageArray.Append(avg).ToArray();
}
return averageArray;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.