gpt4 book ai didi

java - 在数组中插入数字

转载 作者:行者123 更新时间:2023-11-30 04:28:56 25 4
gpt4 key购买 nike

如何将数字(73)添加到数组的中间,然后将所有数字从中间向上移动,这样就不会覆盖数字。这是我到目前为止的代码,73 应该进入中间,后面的数字应该全部移动。无法使用 ARRAYLIST。

int midpoint = length/2;
array[midpoint] = 73;

for (int i = midpoint; i<length; i++){
aNums[i+1] = array[i];
System.out.print(array[i] + " ");
}

displayArray1(array,length);

最佳答案

您无法添加到数组中。您首先必须创建一个更大的数组。

int[] newArray = new int[array.length + 1];

然后你必须复制数组的前半部分

for(int i = 0; i < midpoint; i++) {
newArray[i] = array[i];
}

然后将新的中点放入

newArray[midpoint] = 73;

然后复制另一半

for(int i = midpoint + 1; i < array.length; i++) {
newArray[i+1] = array[i];
}

然后 newArray 就有了新的中点。

从技术上讲,最后三个步骤可以按任何顺序完成,但按该顺序执行它们更具可读性。现在您可以调用您的显示方法或真正用它做任何您想做的事情。

有一个名为arrayCopy的实用方法可以帮助移动数组元素。您可能会或可能不会被允许使用它。它的参数有点冗长,但在运行时比典型的 for 循环快一点,因为它利用了 native 代码。

int[] newArray = new int[array.length + 1];
System.arrayCopy(array,0,newArray,0,midpoint);
newArray[midpoint] = 73;
System.arrayCopy(array,midpoint,newArray,midpoint+1,array.length - midpoint);

为了解释这些调用,arraycopy 使用:

System.arrayCopy(arrayFrom, 
startPosInArrayFrom,
arrayTo,
startPosInArrayTo,
numElementsToCopy);

关于java - 在数组中插入数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15118530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com