4

だから私は int[] 配列をその中にある値で繰り返そうとしています。したがって、基本的に配列がある場合 {1,2,3,4} 、出力は次のようになります

{1,2,2,3,3,3,4,4,4,4}

またはあなたが得た場合

{0,1,2,3}

あなたの出力は

{1,2,2,3,3,3}.

ここには2つのforループが必要であることは確かですが、配列の値をコピーするためのコードがわかりません。2 から 2,2 を出すことができません。どんな助けでも大歓迎です、ありがとう。

ここで、うまくいくと思ったコードを編集します

public static int[] repeat(int []in){
    int[] newarray = new int[100];

    for(int i = 0; i<=in.length-1;i++){

        for(int k= in[i]-1;k<=in[i];k++){

            newarray[i] = in[i];   

        }
    }
    return newarray;
}

私はこれがうまくいくと思っていましたが、同じリストを返すだけでした.

4

3 に答える 3

1

試す:

LinkedList<Integer> resList = new LinkedList<Integer>();
for(int i = 0 ; i < myArray.length ;  ++i) {
    int myInt = myArray[i];
    for(int j = 0 ; j < myInt ; ++j) { // insert it myInt-times
        resList.add(myInt);
    }
}
// TODO: build the result as an array : convert the List into an array
于 2012-11-17T20:20:56.683 に答える
1

これにより、正しいサイズの新しい配列が動的に作成され、データが入力されます。

    int[] base = { 1, 2, 3, 4 };
    int size = 0;
    for( int count : base ){
        size += count;
    }

    int[] product = new int[size];

    int index = 0;
    for( int value : base ){
        for(int i = 0; i < value; i++){
            product[index] = value;
            index++;
        }
    }

    for( int value : product ){
        System.out.println(mine);
    }
于 2012-11-17T20:31:28.363 に答える
0

これを試して:

int[] anArray = { 
    0, 1, 2
};
int[] newArray = new int[100];
int cnt=0;
for(int i=0; i<anArray.length; i++)
{
    for(j=1;j>0;j--)
    {
        newArray[cnt]=anArray[i];
        cnt++;
    }
}
于 2012-11-17T20:21:01.863 に答える