int[] forArray = new int[10];
for (int k = 1; k <= 10; k++)
{
forArray[k] = k * 2;
Console.WriteLine(k); // test
}
for (int k = 0; k < 10; k++)
{
Console.WriteLine(forArray[k]);
}
它给出了“越界”错误。我希望我的程序输出2到20之间的自然数。而不是发出错误。当我将第一个for循环条件更改为k <= 9时,它会运行但是给我0而不是20.它就像它将最后一个值返回为0并将其“重新定位”到“前面”。抱歉这个非常简单的问题。
答案 0 :(得分:1)
当涉及引用元素时,数组是从零开始的。因此,对于数组中的10个项目(这是您分配的内容),它是forArray[0]
到forArray[9]
。您的代码尝试从forArray[1]
循环到forArray[10]
,并且没有索引位置10(这是当您最终超出范围时)。
你的第二个for循环很好,因为它从0变为9。
注意:由于您的循环需要从零开始,因此如果您希望以2
开头,则需要调整计算填充到索引位置的数字的方式。
答案 1 :(得分:0)
调试代码并逐步执行,如下所示,您尝试分配到不存在的索引[10]。
{
int[] forArray = new int[10];
for (int k = 1; k < 10; k++) // k < 10 instead of k <= 10
{
forArray[k] = k * 2;
Console.WriteLine(k); // test
//forArray[0] = SKIPPED
//forArray[1] = 2
//forArray[2] = 4
//forArray[3] = 6
//forArray[4] = 8
//forArray[5] = 10
//forArray[6] = 12
//forArray[7] = 14
//forArray[8] = 16
//forArray[9] = 18
//forArray[10] INVALID
}
for (int k = 0; k < 10; k++)
{
Console.WriteLine(forArray[k]);
}
}
答案 2 :(得分:-1)
将您的条件更改为k
forArray [k - 1] = k * 2;