gpt4 book ai didi

c# - 将值与数组中的前一个值相加

转载 作者:太空宇宙 更新时间:2023-11-03 17:17:00 26 4
gpt4 key购买 nike

我做错了什么?我想要做的是添加到现有数组 linesLat 值,但是要插入 linesLat 的下一个值是从数组中获取前一个值并求和 stepLong。但最后出现错误。

    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++;
}
}

附加信息:索引超出数组范围。

最佳答案

你真的应该回到基础。

数组的大小是有限的,它的大小与您声明的大小完全相同。在您的情况下,您分配了两个大小为 1 的数组(由于显式初始化)。

double[] linesLat = { 45.7368 }; // Size 1
double[] linesLong = { 5.9216 }; // Size 1

意思 你不能从 [0, 999] 循环,当你尝试从位置 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;
}

您的问题的可能解决方案变体。

如果唯一的目标是求最后一个公式的和,那么数组就是多余的。

double sumOfFormula = 45.7368;
for (var i = 0; i < 1000; i++) // Will run [0, 999] 1000 iterations
{
sumOfFormula += stepLat;
}
Console.WriteLine("Sum: ", sumOfFormula);

关于c# - 将值与数组中的前一个值相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34030469/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com