我有4个数字如下:
27-01-2016 00.04
我需要在我创建的4个文本视图中的每一个中仅显示4个数字中的每一个。 这是我写的代码,但有重复:
int[] myresult = {result1, result2, result3, result4};
请帮我找到解决方案!
谢谢!!!
答案 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大小的新随机数。