C# 将值与数组中的上一个值求和
我做错了什么?我试图做的是向现有数组添加C# 将值与数组中的上一个值求和,c#,arrays,C#,Arrays,我做错了什么?我试图做的是向现有数组添加linesLat值,但要在linesLat中插入下一个值,则从数组中获取上一个值,并对步长进行求和。但最后还是出错了 static void Main(string[] args) { var stepLong = (10.6237 - 5.9216) / 1000; var stepLat = (47.7245 - 45.7368) / 1000; double[] linesLat =
linesLat
值,但要在linesLat
中插入下一个值,则从数组中获取上一个值,并对步长进行求和。但最后还是出错了
static void Main(string[] args)
{
var stepLong = (10.6237 - 5.9216) / 1000;
var stepLat = (47.7245 - 45.7368) / 1000;
double[] linesLat = { 45.7368 };
double[] linesLong = { 5.9216 };
for (var i = 1; i <= 999; )
{
linesLat[i] = linesLat[i - 1] + stepLat; // throws an error
i++;
}
}
static void Main(字符串[]args)
{
var stepLong=(10.6237-5.9216)/1000;
var stepLat=(47.7245-45.7368)/1000;
双[]线板={45.7368};
双[]行长度={5.9216};
对于(var i=1;i您将linesLat
声明为大小为1的数组。如果您想在其中放入999+个元素,则需要声明一个更大的数组。您将linesLat
声明为大小为1的数组。如果您想在其中放入999+个元素,则需要声明一个更大的数组。您的数组的长度为1,并尝试最高可达999
您需要实例化长度为999的数组
double[] linesLat = new double[999];
您的数组长度为1,您尝试迭代到999
您需要实例化长度为999的数组
double[] linesLat = new double[999];
你真的应该回到基础上来
数组的大小是有限的,它将与您声明的大小完全相同。
在本例中,您分配了两个大小为1的数组(由于显式初始化)
意思当您尝试从位置1获取值时(因为C#数组是零基的;第一个元素在0位置而不是1),您将得到一个KABOOM意思是您将得到一个异常,告诉您,您的索引(可能是1)超出了合法数组边界
解决方案:您应该更改您的解决方案,以按照@i_a_joref的建议声明更大的数组
var linesLat = new double[1000];
linesLat[0] = 45.7368;
此外可以更正确地编写循环:
for (var i = 1; i < linesLat.Length; i++)
{
linesLat[i] = linesLat[i - 1] + stepLat;
}
for(变量i=1;i
您的问题可能的解决方案变化。
如果唯一的目标是得到最后一个公式的和,那么数组是多余的
double sumOfFormula = 45.7368;
for (var i = 0; i < 1000; i++) // Will run [0, 999] 1000 iterations
{
sumOfFormula += stepLat;
}
Console.WriteLine("Sum: ", sumOfFormula);
double sumoff公式=45.7368;
for(vari=0;i<1000;i++)//将运行[0999]1000次迭代
{
sumOfFormula+=阶跃;
}
控制台。写入线(“总和:”,sumOfFormula);
你真的应该回到基础上来
数组的大小是有限的,它将与您声明的大小完全相同。
在本例中,您分配了两个大小为1的数组(由于显式初始化)
意思当您尝试从位置1获取值时(因为C#数组是零基的;第一个元素在0位置而不是1),您将得到一个KABOOM意思是您将得到一个异常,告诉您,您的索引(可能是1)超出了合法数组边界
解决方案:您应该更改您的解决方案,以按照@i_a_joref的建议声明更大的数组
var linesLat = new double[1000];
linesLat[0] = 45.7368;
此外可以更正确地编写循环:
for (var i = 1; i < linesLat.Length; i++)
{
linesLat[i] = linesLat[i - 1] + stepLat;
}
for(变量i=1;i
您的问题可能的解决方案变化。
如果唯一的目标是得到最后一个公式的和,那么数组是多余的
double sumOfFormula = 45.7368;
for (var i = 0; i < 1000; i++) // Will run [0, 999] 1000 iterations
{
sumOfFormula += stepLat;
}
Console.WriteLine("Sum: ", sumOfFormula);
double sumoff公式=45.7368;
for(vari=0;i<1000;i++)//将运行[0999]1000次迭代
{
sumOfFormula+=阶跃;
}
控制台。写入线(“总和:”,sumOfFormula);
您的数组大小为1,在for循环中,您试图访问大于数组大小的索引。
只要改变一下:
double[] linesLat = { 45.7368 };
致:
数组的大小为1,在for循环中,您试图访问大于数组大小的索引。
只要改变一下:
double[] linesLat = { 45.7368 };
致:
向上投票是因为人们在没有任何评论的情况下向下投票,而且因为我真的看不出这个问题有什么错。你最好看一看关于数组的一些基本C#教程,这将在将来为你节省大量的悲伤和时间,并且需要在这里问一些非常琐碎的问题。@Paul太糟糕了,因为这样的操作太多了low最终可能会像Yahoo Answers一样。这不是一个教程。人们至少应该对他们正在做的事情有一些基本的了解。@ShadowWizard我和Paul在这一点上是一致的——这是一个基本的问题,当然,我们很容易看出哪里出了问题,但这只是意味着它写得很好。我看到了代码、逐字记录的错误消息和注释除非是重复的(可能是重复的,但我还没有检查),否则我看不到任何重大问题。@John顺便说一句,我不确定这是否只是一个简单的问题,但除非你做了一些真正不可靠的事情(你不在这里),通常最好将i++
包含在for
的最后一句中:for(var i=1;我向上投票是因为人们在没有评论的情况下向下投票,而且因为我真的看不出这个问题有什么错。你最好看一看关于数组的一些基本C#教程,这将在将来为你节省大量的悲伤和时间,以及在这里问一些非常琐碎的问题的需要。@Paul太糟糕了,因为这样的行为ns堆栈溢出可能会像Yahoo Answers一样结束。这不是一个教程。人们至少应该对他们正在做的事情有一些基本的了解。@ShadowWizard我和Paul在这一点上是一致的——这是一个基本问题,当然,我们很容易看出哪里出了问题,但这只是意味着它写得很好。我看到了代码,一条逐字的错误消息,以及对他期望发生的事情的评论。除非是重复的(可能是重复的,但我还没有检查),否则我看不到任何重大问题。@John顺便说一句,我不确定这是否只是一个简单的问题,但除非你做了一些非常不可靠的事情(你不在这里),通常最好将i++
包含在