gpt4 book ai didi

c# - 数组中的 ArgumentOutOfRange 异常

转载 作者:太空宇宙 更新时间:2023-11-03 19:47:35 25 4
gpt4 key购买 nike

<分区>

我正在创建一种方法,它可以找到下一个元素值和上一个元素值之间的最小绝对差值。

在方法中发生 ArgumentOutofRange 异常。但是当我添加尝试时,捕获异常它起作用了。我的代码有什么问题?但是我创建了适当的条件,例如“如果我等于 0”,当然它找不到 [i-1],那么它将是下一个值 [1] 和 [0] 之间的差异。如果它成为最后一个元素,那么它的(last[i-1])和前一个([i-2])之间的值将有所不同

namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
List<Cla> Clalist = new List<Cla>();
Clalist.Add(new Cla(0));
Clalist.Add(new Cla(2));
Clalist.Add(new Cla(3));
Clalist.Add(new Cla(10));
Clalist.Add(new Cla(100));
Clalist.Add(new Cla(65));

Program nn = new Program();
nn.GetAbs(Clalist);

Console.WriteLine(Clalist[0].AbsValue);
Console.WriteLine(Clalist[1].AbsValue);
Console.WriteLine(Clalist[2].AbsValue);
Console.WriteLine(Clalist[3].AbsValue);
Console.WriteLine(Clalist[4].AbsValue);
Console.WriteLine(Clalist[5].AbsValue);

Console.ReadLine();
}
public void GetAbs(List<Cla> n)
{
int z = n.Count;
for (int i = 0; i < z; i++)
{
if(i == 0)
{
n[0].AbsValue = Math.Abs(n[1].Value - n[0].Value);
}
if(i == (z-1))
{
n[z-1].AbsValue = Math.Abs(n[z-1].Value - n[z -2].Value);
}
else
{
try
{
var AbsV = Math.Abs(n[i + 1].Value - n[i].Value);
var AbsV2 = Math.Abs(n[i - 1].Value - n[i].Value); //exception occurs here
if (AbsV < AbsV2)
n[i].AbsValue = AbsV;
else
n[i].AbsValue = AbsV2;
}
/* catch (ArgumentOutOfRangeException)
{
n[0].AbsValue = n[1].Value - n[0].Value; */ When i add this it works
}
}
}
}
}
}

class Cla
{
public int Value;
public int AbsValue;
public Cla(int v)
{
Value = v;
}
}

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