如何在TextView中随机分配一个int []的每个数字一次

时间:2016-02-03 20:39:14

标签: java android

我有4个数字如下:

27-01-2016 00.04

我需要在我创建的4个文本视图中的每一个中仅显示4个数字中的每一个。 这是我写的代码,但有重复:

int[] myresult = {result1, result2, result3, result4};

请帮我找到解决方案!

谢谢!!!

3 个答案:

答案 0 :(得分:1)

看看Collections.shuffle()。基本上,您需要做的就是创建一个包含所有可能值的列表,然后将其洗牌。

List<Integer> values = new ArrayList<Integer>();
for (int i = 0; i < myresult.length; i++)
    values.add(myresult[i]);

Collections.shuffle(values);

tvanswer1.setText(values.get(0).toString());
tvanswer2.setText(values.get(1).toString());
...

答案 1 :(得分:1)

您可以在初始数组中交换N次两个元素。

//For N = 20:

Random random = new Random();

for(int i=0;i<20;i++)
{
    int pos1 = random.nextInt() % 4;

    int pos2 = random.nextInt() % 4;

    int temp = myresult[pos1];

    myresult[pos1] = myresult[pos2];

    myresult[pos2] = temp;
}

然后:

tvanswer1.setText(Integer.toString(myresult[0]));

tvanswer2.setText(Integer.toString(myresult[1]));

tvanswer3.setText(Integer.toString(myresult[2]));

tvanswer4.setText(Integer.toString(myresult[3]));

希望这有帮助!

答案 2 :(得分:0)

您需要跟踪已选择的内容。一种方法是,如果您的第一个数字是3,而您的下一个随机数也是3,那么转到下一个未选择的数字。这可以通过你刚扫描的另一个布尔数组来完成,并根据它们是否已被使用而设置为真或假。

我不确定你使用的是什么,我会使用一个ArrayList,只需在选中后删除它们。然后你只需要获得一个ArrayList大小的新随机数。