C#循环数组索引值从索引中返回到数组的开头

时间:2017-04-09 16:33:02

标签: c#

我希望创建一个类似以下的程序(c#btw):

int[] arr = new int[9]
//some code that puts values 1, 0, or 2 in each array element
for(int i = 0; i < arr.Length; i++)
{
    if (arr[i] == arr[i + 3]) { return true; }
}

因此,对于数组中的每个值,我正在应用一个公式,该公式使用该值执行某些操作,并且值3前面的索引。当然,一旦i + 3> 8,这会遇到超出范围的异常。

我想要做的是,如果所需索引超出范围,则将索引值循环回到数组的开头。所以,在长度为9的数组中,最后一个索引是8,如果在给定的循环上i = 7,而i + 3则= 10,我希望i + 3'变成',以任何方式,1,和那么当i = 8,而i + 3 = 11时,我希望i + 3变成2。

因此,正在评估的索引对将类似于:

i,i + 3

0 3

1 4

2 5

3 6

4 7

5 8

6 0

7 1

8 2

我怎么能这样做?

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

像这样使用模运算符:

if (arr[i] == arr[(i + 3) % arr.Length]) { return true; }

答案 1 :(得分:3)

您可以在if声明中尝试以下表达式。

arr[i] == arr[(i + 3) % arr.Length];

% Operator

  

将一个表达式的值除以另一个表达式的值,和   返回余数。