Java |移出边界索引,直到到达边界

时间:2018-12-11 05:23:18

标签: java

假设我有一个数组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

1 个答案:

答案 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];

也就是说,我们可以根据给定的输入索引(可能超过数组的边界)旋转数组的边界。到达终点时,我们会将运行索引重新设置为起点。