检查并计算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]并加在一起
我想你要找的是:
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
我认为除了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) )