我有点这样的错误:
" System.IndexOutOfRangeException:索引超出了数组"
当我将int=1
更改为long=1
时,它表示无法将long
转换为int
。
我试图将N
的所有输出保存到数组中,并在结尾显示保存到数组中的内容。
static void Main(string[] args)
{
int a = 0;
a = Convert.ToInt64(Console.ReadLine());
int[] array = new int[a];
if (a == 0)
{
Console.WriteLine("Falsche eingabe.");
}
else
{
long n = 1;
for (int i = 1; i <= array.Length; i++)
{
n *= i;
array[i] = n;
Console.WriteLine("N: " + i + " Fakultät von N: " + array[i]);
}
}
Console.ReadKey();
}
答案 0 :(得分:1)
数组的索引从0开始,而不是从1开始。因此,在for循环i <= array.Length
中,i
等于您输入的长度,并尝试array[array.Length]
抛出异常。改为:
for (int i = 0; i < array.Length; i++)
原因索引为零基于语言基于C,其中数组是指向为数组分配的位置的指针:
int *arrayPointer;
然后要通过数组,需要转到arrayPointer + sizeof(int)*i
。因此,对于数组的第一个位置i
应该从零开始
此外这行不编译:
a = Convert.ToInt64(Console.ReadLine());
当您转换为a
时, int
的类型为long
。使用ToInt32