Java 如何避免重复随机数并在android中选择另一个?
我有一个数组列表和一个整数数组Java 如何避免重复随机数并在android中选择另一个?,java,android,Java,Android,我有一个数组列表和一个整数数组 ArrayList<Integer> ar= new ArrayList<Integer>(); int[] number= {0,1,2,3,4,5}; 但我没有想到这一点,它不会重复任何数字,但如果它在第二次单击中得到一个重复的数字,那么它就烤好了,但我想在整数数组中的每个数字都烤好后再烤,这应该是我修改过的逻辑吗?ArrayList ar=new ArrayList(); ArrayList<Integer> a
ArrayList<Integer> ar= new ArrayList<Integer>();
int[] number= {0,1,2,3,4,5};
但我没有想到这一点,它不会重复任何数字,但如果它在第二次单击中得到一个重复的数字,那么它就烤好了,但我想在整数数组中的每个数字都烤好后再烤,这应该是我修改过的逻辑吗?ArrayList ar=new ArrayList();
ArrayList<Integer> ar= new ArrayList<Integer>();
int[] number= {0,1,2,3,4,5};
for (int i : number) {
ar.add(i);
}
Random r = new Random();
// repeat this part and you will never have duplicate numbers
int select = r.nextInt(ar.size());
int random = ar.get(select);
ar.remove(select);
int[]数={0,1,2,3,4,5};
for(int i:编号){
ar.add(i);
}
随机r=新随机();
//重复这一部分,你将永远不会有重复的数字
int select=r.nextInt(ar.size());
int random=ar.get(选择);
ar.remove(选择);
ArrayList ar=new ArrayList();
int[]数={0,1,2,3,4,5};
for(int i:编号){
ar.add(i);
}
随机r=新随机();
//重复这一部分,你将永远不会有重复的数字
int select=r.nextInt(ar.size());
int random=ar.get(选择);
ar.remove(选择);
LinkedList ar=new LinkedList();
int[]数={0,1,2,3,4,5};
for(int i:编号)
ar.add(i);
收藏。洗牌(ar);
//每次单击时:
如果(ar.isEmpty()){
//烤好了
}否则{
整数pop=ar.pop();
//烤面包汽水
}
LinkedList ar=new LinkedList();
int[]数={0,1,2,3,4,5};
for(int i:编号)
ar.add(i);
收藏。洗牌(ar);
//每次单击时:
如果(ar.isEmpty()){
//烤好了
}否则{
整数pop=ar.pop();
//烤面包汽水
}
如果希望每次都显示“Finished”(完成),不要将其放在条件块(也称为“else”)中如果希望每次都显示“Finished”(完成),不要将其放在条件块(称为“else”)中,它可以工作,但在2或3个按钮单击后,这是强制关闭的原因,ar中的索引越界异常。删除(随机)更新:应该是ar.remove(选择)而不是ar.remove(random),因为传入int值时存在API冲突。它可以工作,但在2或3个按钮单击后,这将导致强制关闭,并在ar.remove(random)中出现索引越界异常。remove(random)Updated:应该是ar.remove(select)而不是ar.remove(random),因为传入int值时存在API冲突这里没有称为pop的方法,请更正你的答案,我想会的work@Reyjohn列表没有pop方法,但LinkedList有。LinkedList实现队列。顺便说一句,这只是一个例子,你只需要将列表洗牌,然后一次取一个元素。这里没有叫做pop的方法,请更正你的答案,我想会的work@Reyjohn列表没有pop方法,但LinkedList有。LinkedList实现队列。顺便说一句,这只是一个示例,您只需要对列表进行洗牌,然后一次只取一个元素
ArrayList<Integer> ar= new ArrayList<Integer>();
int[] number= {0,1,2,3,4,5};
for (int i : number) {
ar.add(i);
}
Random r = new Random();
// repeat this part and you will never have duplicate numbers
int select = r.nextInt(ar.size());
int random = ar.get(select);
ar.remove(select);
LinkedList<Integer> ar = new LinkedList<Integer>();
int[] number = { 0, 1, 2, 3, 4, 5 };
for (int i : number)
ar.add(i);
Collections.shuffle(ar);
//every time you click:
if (ar.isEmpty()) {
//toast finished
} else {
Integer pop = ar.pop();
//toast pop
}