-2

我想从一个数组中获取四个图像,但我需要来自其他数组的相同位置图像,如示例所示。

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

我现在有 2 组 10 张图片。现在我需要来自相同两个阵列的 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

this is your solution

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

this is your convert function

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)使用前五个数字作为您的五个索引 - 它们将是随机的并且彼此唯一,并且可用于两个数组。

在这种情况下,我们将对两个数组使用 7、9、5、2 和 4。

顺便说一句,如果您想自己实现随机洗牌(例如,如果您想洗牌数组而不是集合),请参阅数组的随机洗牌

于 2013-05-03T06:31:20.560 回答