既存の配列から配列を作成するには?

wetmoney:

Javaへの新規およびint配列を取り、別のint配列を返します。プログラム/メソッドを作成しようとしているが、それは要素の値でインデックスの値を置き換えています。(実施例{2,1,3}は{0,0,1,2,2,2}を戻します

public static void main(String[] args) {

    int[] pracArray = {2, 1, 3};

    int sum = 0;

    for (int i = 0; i < pracArray.length; i++)
    {
        sum = sum + pracArray[i];
    }

    System.out.println("Amount of array indexes: " + sum);

    int[] newArray = new int[sum];

    System.out.println(Arrays.toString(pracArray));

    for (int i = 0; i < pracArray.length; i++)
    {

        for (int j = 0; j < pracArray[i]; j++)
        {
            newArray[j] = i;
        }
    }
    System.out.println(Arrays.toString(newArray));
}

}

現在、私は[2,2,2,0,0,0]を取得しています。私は無駄でループを反復処理のために何回、それぞれを変更しようとしています。しかし、多くの実行 - 新しい配列の値は常に0になりますので、。私はまたNEWARRAYの要素がカウンターに等しくすることを試みた(となる数++ forループのintカウント= 0)。

Surronie:

あなたの配列の長さを考えるとは、あなたの外側の「I」ループは値0,1,2を反復され、3です。それは(それゆえ、彼らは出力に0である理由)あなたの内側の「J」のループは、インデックス3,4,5への書き込みは決して意味し、なぜ最初の3つのインデックスが「2」に設定されている(2最後は "で処理インデックスされますI」ループ)。代わりにこれを試してみてください...

int h = 0;

for (int i = 0; i < pracArray.length; i++)
{
    for (int j = 0; j < pracArray[i]; j++)
    {
        newArray[h] = i;

        h++;
    }
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=32284&siteId=1