如何将以前的数组元素的值添加到当前元素

时间:2015-08-21 20:48:31

标签: c# arrays

对于数组中的每个元素,用随机整数填充,我需要将前一个元素的值添加到它的当前元素。

这是我的代码:

   class Program
    {
        static void Main(string[] args)
        {
            int[] numbers = new int[10];
            Random generator = new Random();
            for (int i = 0; i < numbers.Length; i++)
            {
                numbers[i] = generator.Next(0, 100);
            }

            for (int i = 0; i < numbers.Length; i++)
            {
                Console.Write("{0} ", numbers[i]);
            }
            Console.WriteLine();

            for (int i = 0; i < numbers.Length+1; i++)
            {
                Console.Write("{0} ", numbers[i]);
                numbers[i + 1] += numbers[i];
            }

(来自评论)它无法正常工作。我做了一些更改,但是在最后一个值之后我仍然得到IndexOutOfRangeException。它必须是10个随机值作为输入,10个作为输出。但是代码只能正确地输出9个值。

1 个答案:

答案 0 :(得分:2)

你的最后一个循环中有一个错误:

for (int i = 0; i < numbers.Length + 1; i++)
    numbers[i + 1] += numbers[i];

这将导致numbers[i + 1]在最后两次迭代中抛出IndexOutOfRangeException。而是使用以下内容停止在最后一个元素:

for (int i = 0; i < numbers.Length - 1; i++)
    numbers[i + 1] += numbers[i];

另一个潜在的问题是,在读取更新其后继者时,每个元素已经与其前身相加。如果您只想添加前一个前导的值,请反转循环的流程:

for (int i = numbers.Length - 1; i > 0; i--)
    numbers[i] += numbers[i - 1];

编辑:如果您想在阵列中输出新值作为同一循环的一部分,您可以像这样调整它:

for (int i = numbers.Length - 1; i >= 0; i--)
{
    if (i > 0)
        numbers[i] += numbers[i - 1];
    Console.Write("{0} ", numbers[i]);
}

请注意,第一个数字(在索引0处)没有更改其值(因为没有添加到它的前导数字);它只是印有旧价值。