2016-11-18 13 views
-1

これは私が2つの配列を一緒に1つの配列にマージする必要があります。2つの配列をJavaで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; 
} 

期待値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

ですが、私はあなたのコードを書いていませんが、私はあなたを正しい方向に向けるつもりです。

まず、これを紙面で行い、各番号が宛先配列に追加された後に状態を書き出すと便利だと思います。例えば

targetArrayが満たされるまで

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 

はこれをやっておいてください。ある時点では、source1Indexを増やすことができず、sourceArray2からのみ描画する必要があります。

これを紙で行う方法を理解すると、コードを書くのがはるかに簡単になります(System.arrayCopyは必要ありません)。

+0

これは私にとって大きな助けになりました、ありがとうございます;) –

関連する問題