如何将前一个数组元素的值添加到当前元素
本文关键字:添加 数组元素 元素 一个 | 更新日期: 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处)的值没有改变(因为没有前一个数字可以添加);