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

本文关键字:添加 数组元素 元素 一个 | 更新日期: 2023-09-27 18:09:05

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

这是我的代码:

   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];
            }

(from comment)它不能正常工作。我做了一些改变,但我仍然得到IndexOutOfRangeException后的最后一个值。输入必须是10个随机值,输出必须是10个。但是代码只能正确工作到9个值输出

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

最后一个循环有bug:

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];

Edit:如果您想将数组中的新值作为同一循环的一部分输出,您可以这样调整它:

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

注意,第一个数字(索引0处)的值没有改变(因为没有前一个数字可以添加);