在Console.WriteLine中找到错误(“N:”+ i +“FakultätvonN:”+ list [i]); 它说System.ArgumentOutOfRangeException我没有得到问题,因为VS没有强调任何东西。
抱歉愚蠢的问题,我刚刚开始我的c#学习。
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace wbs
{
class Programm
{
static void Main(string[] args)
{
int a = 0;
a = Convert.ToInt32(Console.ReadLine());
if (a == 0)
{
Console.WriteLine("Falsche eingabe.");
}
else
{
List<long> list = new List<long>();
long n = 1;
for (int i = 1; i <= a; i++)
{
n *= i;
list.Add(n);
Console.WriteLine("N: " + i + " Fakultät von N: " + list[i]);
}
}
Console.ReadKey();
}
}
}
答案 0 :(得分:2)
list[]
索引器需要int
,而非long
。
您不应在此使用long
。
答案 1 :(得分:0)
在“其他”正文中使用以下内容:
List<long> list = new List<long>();
long n = 1;
for (int i = 1; i <= a; i++)
{
n *= i;
list.Add(n);
Console.WriteLine("N: " + i + " Fakultät von N: " + list[i-1]);
}
注意List声明中的'long'和&amp; for循环中的'int'。 因为你将'i'限制为'a'int,对我来说也应该是足够的。最重要的是,我认为你不会计算超过2 ^ 31个阶乘:)。
此外,您还有另一个错误:
'i'的初始值为1.因此,在向列表中仅添加一个值后,您正在尝试读取列表[1]。但是列表索引是从0开始的,所以应该是list [0]。 所以在你的代码中用列表[i-1]替换列表[i],如上面的代码所示。
答案 2 :(得分:0)
问题在于这一行:
Console.WriteLine(“N:”+ i +“FakultätvonN:”+ list1 [j ++]);
不能有任何列表的地址为1,因为我在开始时被解析,列表与数组从0开始相同,所以我试图从1开始它并导致超出范围错误:)< / p>
我是1,但我的名单从0开始而不是1 :)带我整个该死的日子,但我学到了很多。
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace wbs
{
class Programm
{
static void Main(string[] args)
{
int a = 0;
a = Convert.ToInt32(Console.ReadLine());
if (a == 0)
{
Console.WriteLine("Falsche eingabe.");
}
else
{
List<double> list1 = new List<double>();
double n = 1;
for (int i = 1, j = 0; i <= a; i++)
{
n = n * i;
list1.Add(n);
Console.WriteLine("N: " + i + " Fakultät von N: " + list1[j++]);
}
}
Console.ReadKey();
}
}
}