【问题标题】:Java - Add Element to an ArrayJava - 将元素添加到数组
【发布时间】:2023-04-04 03:49:02
【问题描述】:

看了一圈,在java中找不到类似的问题..

基本上我需要在特定位置索引的 int 数组中添加一个数字

我只能用数组,不能ArrayLists

这是我目前所拥有的,我知道它为什么不起作用,但我不知道如何解决覆盖问题,我不希望它这样做。

任务是非覆盖插入。例如最终结果将是

[1 2 1337 3 4 5 6 7 8]

这里是sn-p的代码:

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;
}

【问题讨论】:

  • 这是作业吗? “我不知道如何解决这个问题。” 问题是什么?请注意,“不起作用”在描述问题时没有用。解决它的最佳理论是什么? What have you tried?
  • 您的意思是非覆盖插入吗?例如最终结果将是 [1 2 1337 3 4 5 6 7 8]?
  • 那个问题,事实上它没有将它添加到数组中,这是我解决它的最佳理论......@Bill 是的
  • 好的,再次。这是作业吗?如果是这样,它应该被标记为这样,并且会比最后 4 个标签的总和吸引更多的“追随者”。啊是的。 288(最后 4 个标签组合关注者)与 862(家庭作业)。 ;)
  • 那您不需要调整目标数组的大小吗?原版有 8 个元素,新版有 9 个。

标签: java arrays position element add


【解决方案1】:

你的问题是这个循环:

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

它将i+1 写入i - 即它移动元素向下 - 你需要它来移动它们向上。为了向上移动,您需要迭代向下(否则您会覆盖您刚刚编写的内容)。
试试这个:

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

请注意,这会丢失(覆盖)最后一个元素,从而为 pos 处的插入腾出空间。

【讨论】:

  • 这正是我需要这个循环来做的,现在我可以继续我的项目了,谢谢!
【解决方案2】:
myArray[i+1] = myArray[i];

也许这会对你有所帮助。

【讨论】:

  • 这将最终用 myArray[i] 替换数组的其余部分,从而覆盖数据。
猜你喜欢
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
  • 2015-05-11
  • 2015-05-14
  • 2016-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多