环顾四周,在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;
}
答案 0 :(得分:2)
你的问题就是这个循环:
for (int i = pos; i<myArray.length-1; i++){
myArray[i] = myArray[i+1];
}
它正在将i+1
写入i
- 即它将元素向下移动 - 您需要将它们向上移动。为了向上移动,你需要迭代 down (否则你会覆盖你刚写的东西)。
试试这个:
for (int i = myArray.length - 1; i > pos; i--) {
myArray[i] = myArray[i - 1];
}
请注意,通过丢失(覆盖)最后一个元素,这将为pos
的插入腾出空间。
答案 1 :(得分:0)
myArray[i+1] = myArray[i];
也许这会对你有帮助。