好的,所以我有以下练习,我需要将2个数组合并为1个数组。
新数组必须包含每个数组的元素,例如:newArray index 0 = 0 index的array1Element,newArray index 1 = index 0的array2Element等等。
如果其中一个阵列没有更多的元素,继续从较长的阵列中放置元素......到目前为止,我已经来到这个......这是不正确的,或者没有给出正确的解决方案......你能不能给我一个合适的解决方案并解释代码中所做的一切......
public static void main(String[] args) {
int[] array1 = {1,1,1,1,1,1};
int[] array2 = {2,2,2,2,2,2,2,2,2,2};
arrayMan(array1,array2);
}
public static int[] arrayMan(int[] firstArray,int[] secondArray) {
int[] newArray = new int[firstArray.length + secondArray.length];
int array1Pos;
int array2Pos;
System.arraycopy(firstArray,0,newArray,0,firstArray.length);
for (int i = 0; i < newArray.length -1 ; i++) {
for (int j = 0; j < secondArray.length ; j++) {
if(newArray[i] == newArray[i+1]) {
array1Pos = newArray[i+1];
array2Pos = secondArray[j];
newArray[i] = array1Pos;
newArray[i + 1] = array2Pos;
}
}
}
for (int i = 0; i < newArray.length ; i++) {
System.out.println(newArray[i]);
}
return newArray;
}
预期产出应为{1,2,1,2,1,2,1,2,1,2,1,2,2,2,2}
答案 0 :(得分:3)
我不会为你写代码,但我会试着指出你正确的方向。
我认为你会发现首先在纸上做这件事很有帮助,在将每个数字添加到目标数组后写出状态。
例如:
Start:
sourceArray1 = [1,1,1,1,1,1]
sourceArray2 = [2,2,2,2,2,2,2,2,2,2]
targetArray = []
targetIndex = 0 <- where to put the next item
source1Index = 0 <- where to get the next item from sourceArray1
source2Index = 0 <- where to get the next item from sourceArray2
Step (take from sourceArray1)
targetArray = [1]
targetIndex = 1
source1Index = 1
source2Index = 0
Step (take from sourceArray2)
targetArray = [1,2]
targetIndex = 2
source1Index = 1
source2Index = 1
Step (take from sourceArray1)
targetArray = [1,2,1]
targetIndex = 3
source1Index = 2
source2Index = 1
在填充targetArray
之前继续这样做。在某些时候,您无法增加source1Index
,并且必须完全从sourceArray2
提取。
一旦您了解了如何在纸上执行此操作,您就会发现代码更容易编写(并且您会发现System.arrayCopy
不需要这些代码。