2011-12-15 74 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]; 

也许这会帮助你。