2011-12-15 73 views
1

看了看四周,找不到在Java中的任何類似的問題..爪哇 - 添加元素添加到陣列

基本上我需要一些在特定位置指數添加到一個int數組

我可以只使用陣列,沒有ArrayLists

這是我到目前爲止,我知道爲什麼它不工作,但我不知道如何解決覆蓋問題,我不希望它去做。

該任務是一個非覆蓋插入。例如最終的結果將是

[1 2 1337 3 4 5 6 7 8] 

這裏是代碼片段:

public void main(String[] args) 
{ 
int[] array = {1,2,3,4,5,6,7,8}; 
array = add(array, 2, 1337); 
for(int i : array) 
    System.out.print(i + " "); 
} 


public int[] add(int[] myArray, int pos, int n) 
{ 
    for (int i = pos; i<myArray.length-1; i++){ 
     myArray[i] = myArray[i+1]; 
    } 
    myArray[pos] = n; 
    return myArray; 
} 
+4

這功課嗎? *「我無法弄清楚如何解決這個問題。」*有什麼問題?請注意,「不起作用」在描述問題時沒有用處。你解決它的最好的理論是什麼? [你有什麼嘗試?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) – 2011-12-15 01:37:54

+1

你的意思是一個非覆蓋插入?例如最終的結果是[1 2 1337 3 4 5 6 7 8]? – Bill 2011-12-15 01:41:15

+0

這個問題,因爲它沒有將它添加到數組中,這是我解決它的最好理論...... @ Bill是 – user1062898 2011-12-15 01:42:33

回答

2

你的問題是這樣的循環:

for (int i = pos; i<myArray.length-1; i++){ 
    myArray[i] = myArray[i+1]; 
} 

它寫i+1i - 即它的動作元素 - 你需要給他們拉昇。爲了向上移動,你需要迭代下降(否則你會覆蓋你剛寫的內容)。
試試這個:

for (int i = myArray.length - 1; i > pos; i--) { 
    myArray[i] = myArray[i - 1]; 
} 

注意,這將失去(覆蓋)的最後一個元素使房間的插入在pos

0
myArray[i+1] = myArray[i]; 

也許這會幫助你。