我希望我能得到一些帮助,如何移动数组的元素,一个索引。因此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];
}
任何指导都将不胜感激。
答案 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,这几乎肯定更快。
最后,“代码不想运行”是一个完全无用的信息。你怎么运行它,你得到什么例外,你尝试了什么?