Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java |将索引移出边界,直到它进入边界_Java - Fatal编程技术网

Java |将索引移出边界,直到它进入边界

Java |将索引移出边界,直到它进入边界,java,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-->a 11-->b 16-->g 19-->j 20-->a您可以使用模数运算符,例如: int index = 20; int position = ((index % x.length) + 1

假设我有一个数组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-->a
11-->b
16-->g
19-->j

20-->a

您可以使用模数运算符,例如:

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

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

LOL我如何使用for循环实现这一点?你认为他真的想使用循环吗?负数呢?我应该指定,让我更新问题。您没有使用
for
循环:)您的代码将更简单。@我编辑了我的问题以涵盖负索引的情况。
char
无符号的
,因此您不能为其分配负数,Java语言中不允许使用负索引