我希望我能得到一些幫助,如何移動一個數組的元素,一個索引。以便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