Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将值与数组中的上一个值求和_C#_Arrays - Fatal编程技术网

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++
包含在