通过1个索引重复移动数组中的元素

时间:2017-10-09 19:04:56

标签: java arrays

我希望我能得到一些帮助,如何移动数组的元素,一个索引。因此Array [0]位于Array [1]位置,Array [1]位于Array [2]位置,依此类推。到目前为止我的代码不想运行:

int[] p = {1, 2, 3, 4, 5};

for(int i = 0; i < p.length; i++) {
    p[i + 1] = p[i];
}

任何指导都将不胜感激。

2 个答案:

答案 0 :(得分:1)

最简单的是使用循环计数器

int[] p = {1, 2, 3, 4, 5};
int[] r = new int[p.length];
for(int i = 0; i < p.length; i++) {
    r[(i + 1) % p.length] = p[i];
}

这确保索引将在p.lenght的长度内,而i + 1将为0

另请注意,我为结果创建了一个数组,因为你需要保留对index的最后一个swaped int的引用来设置,因为你将循环替换它。

答案 1 :(得分:0)

首先,您需要更正for循环中的上限。如你所知,你将获得ArrayIndexOutOfBoundsException,因为i + 1将超过最后一个元素。

其次,如果你想将元素从i移动到i + 1,你必须向后循环。否则,你将继续覆盖下一个元素。如果你看不到,试着在纸上做。

第三,您可能希望使用System.arrayCopy,这几乎肯定更快。

最后,“代码不想运行”是一个完全无用的信息。你怎么运行它,你得到什么例外,你尝试了什么?