假设我有一个数组x。
char[] x = new char[10]{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'};
我想使用超出范围的索引访问数组。
例如:
-2-> i
-1-> j
0-> a
1-> b
9-> j
10->一个
11-> b
16-> g
19-> j
20-> a
答案 0 :(得分:3)
您可以使用模运算符,例如:
int index = 20;
int position = ((index % x.length) + 10) % x.length;
char val = x[position];
我不知道您为什么认为需要在此处使用循环,或者您是否有某些要求。使用%
可能是最简单的方法。
如果需要使用循环,请注意以下几点:
int i = 0;
int index = 20;
while (index > 0) {
i++;
if (i == x.length) i = 0;
--index;
}
char val = x[i];
也就是说,我们可以根据给定的输入索引(可能超过数组的边界)旋转数组的边界。到达终点时,我们会将运行索引重新设置为起点。