检查并计算c#中当前索引键数组旁边的值

本文关键字:数组 索引 计算 检查 | 更新日期: 2023-09-27 18:14:33

 if (theArray[i-1] < theArray.Length && theArray[i-1] != null)

是我研究后得到的。但是它给了我索引外的错误,因为我做了i-1。

但是我希望if语句检查i-1上的键/索引是否存在,然后做一些事情…

看到我想做的是加上索引值旁边的当前索引。

for (int i = 0; i < theArray.Length; i++)
{
    Left = 0;
    Right = 0;
            if (i != 0)
            {
                Left = theArray[i - 1];
            }
            if (theArray[i + 1] < theArray.Length)
            {
                Right = theArray[i + 1];
            }
    calc = Left + Right;
    output2.Text += calc + ", ";
}

所以如果左边在那里,那么改变左边的值(默认是0,右和左),如果右边在那里,那么改变右边的值。然后计算从theArray[]中获取的两个值。

E。如果它在theArray[16]上,它应该取左边的theArray[15]和theArray[17]并加在一起

检查并计算c#中当前索引键数组旁边的值

我想你要找的是:

if(i < theArray.Length)

或:

if(i < theArray.Length && theArray[i] != null)
我通常会在这样的循环中使用i:
for(int i = 0; i < theArray.Length; i++)

更新:

你不能用i-1,因为在第一次迭代中,当i == 0时,它的值会是-1。这是一个非法的数组索引。


更新2:

我想我明白你现在想做什么了。下面是一种方法:
for (int i = 0; i < theArray.Length; i++)
{
    Left = 0;
    Right = 0;
    if (i > 0)
    {
        Left = theArray[i-1];
    }
    if (i < theArray.Length - 1)
    {
        Right = theArray[i+1];
    }
    calc = Left + Right;
    output2.Text += calc + ", ";
}

检查i是否是有效的数组索引,您可以这样做:

if(i >= theArray.GetLowerBound(0) && i <= theArray.GetUpperBound(0))

这只在罕见的边缘情况下是必要的,所以这样做更实用:

if(i >= 0 && i < theArray.Length)

一旦你知道它是一个有效的索引,你可以检查null如果需要。

您的问题是索引还是给定索引的数组值存在?在数组的情况下,你总是可以确保索引n"存在",如果0 0)索引"under"和(n <</p>

我认为除了Oded所说的,正确的表达可能是:

if (i < theArray.Length && i > 0 && theArray[i-1] != null)

因为您正在检查i-1索引值

从代码中可以看出,"i"是从1开始的,而数组索引是从0开始的。所以你可以使用:

if ( (i > 0) && (i <= theArray.Length) && (theArray[i-1] != null) )