我希望创建一个类似以下的程序(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
我怎么能这样做?
感谢您的帮助。
答案 0 :(得分:4)
像这样使用模运算符:
if (arr[i] == arr[(i + 3) % arr.Length]) { return true; }
答案 1 :(得分:3)