如何在数组中间添加一个数字(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);
答案 0 :(得分:1)
使用List
,或更具体地说ArrayList
:
ArrayList<Integer> list = new ArrayList<>();
// ... put stuff in list
int midpoint = list.size()/2;
list.add(midpoint, 73);
答案 1 :(得分:1)
您无法添加到数组。首先必须创建一个更大的数组。
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循环要快一些,因为它利用了本机代码。
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);
答案 2 :(得分:0)
你使用数组会给自己带来更多麻烦。
使用ArrayList,它由数组
支持ArrayList l = new ArrayList();
//...fill contents
int index = l.size()/2;
l.add(index, 72);