对于数组中的每个元素,用随机整数填充,我需要将前一个元素的值添加到它的当前元素。
这是我的代码:
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个值。
答案 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处)没有更改其值(因为没有添加到它的前导数字);它只是印有旧价值。