2017-10-09 68 views
-4

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

任何指導將不勝感激。

+0

索引4應該發生什麼?它應該去0嗎?還是應該轉向索引5? – Frakcool

+0

索引4應該移動到索引5,儘管沒有索引4 – Eliyo

+0

@Eliyo索引4不應該移動到索引5.沒有人能做到這一點,因爲這將是'ArrayIndexOutOfBoudsException'。 – user3437460

回答

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的lenght內部和i + 1將是0

另外請注意,我創建了一個陣列,用於結果,因爲否則你需要保持索引的最後一個swaped int的引用來設置,因爲你會用循環取代它的值。

+1

我認爲你的意思是在你的for循環裏面的'p.length'。 –

0

首先,您需要更正for循環的上限。如你所知,你會得到ArrayIndexOutOfBoundsException,因爲i + 1將會超過最後一個元素。其次,如果您想將元素從i移動到i + 1,則必須向後循環。否則,您將繼續覆蓋下一個元素。如果你看不到,試着在紙上做。

第三,您可能想要使用System.arrayCopy,這幾乎肯定會更快。

最後,「代碼不想運行」是一個完全沒用的信息。你如何運行它,你有什麼例外,你嘗試了什麼?