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

时间:2011-11-13 20:11:46

标签: c# arrays

 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 []获取的两个值。

例如,如果它在theArray [16]上它应该采取左,theArray [15]和theArray [17]并且加在一起。

5 个答案:

答案 0 :(得分:2)

我认为你在寻找:

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

答案 1 :(得分:0)

要检查i是否为有效数组索引,您可以执行以下操作:

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

然而,只有在罕见的边缘情况下才需要这样做,所以这样做更实际:

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

一旦您知道它是有效的索引,您可以根据需要检查null

答案 2 :(得分:0)

您的问题是索引还是具有给定索引的数组值? 在数组的情况下,如果0 <0,则可以始终确保索引n“存在”。 n&lt; array.Length。 如果要检查数组值,首先检查(n> 0)索引“under”和(n&lt; array.Length)索引“over”

答案 3 :(得分:-1)

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

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

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

答案 4 :(得分:-1)

从您的代码中可以看出,“i”是基于一的,您的数组索引是从零开始的。所以你可以使用:

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