2016-11-18 57 views
-1

好吧,所以我有以下練習,我需要將2個數組合併成1個數組。在Java中將2個數組合併爲1


新陣列具有以containt每個陣列例如元素:newArray索引0 = array1Element從0索引,索引newArray 1 = array2Element從索引0等..

如果這些陣列中的一個沒有更多的元素,繼續從更長的陣列中放置元素...到目前爲止,我已經來到了這個......這是不正確的或沒有給出正確的解決方案..你可以給我一個適當的解決方案,並解釋一切這是在代碼中完成的..

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

expecte d輸出應該是{1,2,1,2,1,2,1,2,1,2,1,2,2,2,2}

+3

很抱歉,本網站不是免費的「我們爲您調試您的代碼」服務。 A)如果你的程序沒有提供預期的輸出,那麼在你的問題中包括那個失敗的描述,以及B)學習如何使用調試器;或者只是將追蹤語句添加到您的邏輯中...所以您可以自己啓用**來追查**您的**代碼中的問題。 – GhostCat

+0

歡迎來到StackOverflow。你的代碼輸出什麼,你期望輸出是什麼? – Paul

+0

@Paul的輸出應該是{1,2,1,2,1,2,1,2,1,2,1,2,2,2,2,2} –

回答

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)。

+0

是的,謝謝這對我很有幫助,祝福你;) –