-2

配列から4つの画像を取得したいのですが、例のように他の配列から同じ位置の画像が必要です。

images = new int[] {
    R.drawable.a, R.drawable.f, R.drawable.k,
    R.drawable.u, R.drawable.y, R.drawable.w, R.drawable.t, R.drawable.g,
    R.drawable.b, R.drawable.o
};

images2 = new int[] {
    R.drawable.apple, R.drawable.fan,
    R.drawable.kite, R.drawable.umbrells,
    R.drawable.yark,R.drawable.watch, R.drawable.tap,
    R.drawable.gun, R.drawable.ball, R.drawable.orange
};

私は今、10枚の写真の2つの配列を持っています。今、同じ両方の配列から5つの画像が必要ですが、他の配列からランダムに対応する5つの画像が必要です。

私が必要とするように

array1={R.drawable.a, R.drawable.w,R.drawable.o,R.drawable.g}

と同様の対応。

array2 = {R.drawable.apple, R.drawable.watch,R.drawable.orange,R.drawable.gun}
4

2 に答える 2

0

これがあなたの解決策です

ArrayList<Integer> list=new ArrayList<Integer>();
        ArrayList<Integer> list1=new ArrayList<Integer>();
        Random r1=new Random();
        int[] images = new int[] {R.drawable.a, R.drawable.f, R.drawable.k,
                R.drawable.u, R.drawable.y, R.drawable.w, R.drawable.t, R.drawable.g,
                R.drawable.b, R.drawable.o};
        int[] images2 = new int[] {  R.drawable.apple, R.drawable.fan,
                R.drawable.kite, R.drawable.umbrells,
                R.drawable.yark,R.drawable.watch, R.drawable.tap,
                R.drawable.gun, R.drawable.ball, R.drawable.orange};
        for(int i=0;i<4;i++)
        {
            while(true)
            {
                int next=r1.nextInt(10)+1;
                if(!list.contains(next))
                {
                list.add(images[next]);
                list1.add(images2[next]);
                break;
                }
            }
        }
        array1 = convertIntegers(list);
        array2 = convertIntegers(list1);

これはあなたの変換機能です

public static int[] convertIntegers(List<Integer> integers)
{
    int[] ret = new int[integers.size()];
    Iterator<Integer> iterator = integers.iterator();
    for (int i = 0; i < ret.length; i++)
    {
        ret[i] = iterator.next().intValue();
    }
    return ret;
}
于 2013-05-03T07:36:57.107 に答える
0

1) 数字のコレクションを作る{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

2) コレクションをシャッフルします ( http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#shuffle(java.util.List) )

今、あなたは次のようなものを持っています{7, 9, 5, 2, 4, 3, 1, 0, 8}

3) 最初の 5 つの数字を 5 つのインデックスとして使用します。これらはランダムで互いに一意であり、両方の配列で再利用できます。

この場合、両方の配列に 7、9、5、2、および 4 を使用します。

ちなみに、ランダムシャッフルを自分で実装したい場合(例えば、コレクションではなく配列をシャッフルしたい場合)は、配列のランダムシャッフルを参照してください。

于 2013-05-03T06:31:20.560 に答える