我希望我能得到一些帮助,如何移动一个数组的元素,一个索引。以便Array [0]位于Array [1]位置,Array [1]位于Array [2]位置,依此类推。代码我到目前为止不想运行:通过1索引反复移动数组中的元素
int[] p = {1, 2, 3, 4, 5};
for(int i = 0; i < p.length; i++) {
p[i + 1] = p[i];
}
任何指导将不胜感激。
我希望我能得到一些帮助,如何移动一个数组的元素,一个索引。以便Array [0]位于Array [1]位置,Array [1]位于Array [2]位置,依此类推。代码我到目前为止不想运行:通过1索引反复移动数组中的元素
int[] p = {1, 2, 3, 4, 5};
for(int i = 0; i < p.length; i++) {
p[i + 1] = p[i];
}
任何指导将不胜感激。
最简单的是使用圆形计数器
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的lenght内部和i + 1将是0
另外请注意,我创建了一个阵列,用于结果,因为否则你需要保持索引的最后一个swaped int的引用来设置,因为你会用循环取代它的值。
我认为你的意思是在你的for循环里面的'p.length'。 –
首先,您需要更正for循环的上限。如你所知,你会得到ArrayIndexOutOfBoundsException,因为i + 1将会超过最后一个元素。其次,如果您想将元素从i移动到i + 1,则必须向后循环。否则,您将继续覆盖下一个元素。如果你看不到,试着在纸上做。
第三,您可能想要使用System.arrayCopy,这几乎肯定会更快。
最后,“代码不想运行”是一个完全没用的信息。你如何运行它,你有什么例外,你尝试了什么?
索引4应该发生什么?它应该去0吗?还是应该转向索引5? – Frakcool
索引4应该移动到索引5,尽管没有索引4 – Eliyo
@Eliyo索引4不应该移动到索引5.没有人能做到这一点,因为这将是'ArrayIndexOutOfBoudsException'。 – user3437460