我有一个Arraylist和一个像这样的整数数组,
ArrayList<Integer> ar= new ArrayList<Integer>();
int[] number= {0,1,2,3,4,5};
现在我想从这个数组加注整数,我点击一个按钮,没有任何重复。在烘烤了这个数组中的每个数字后,我想要'完成',我在onclick监听器中的逻辑就在这里:
Random r = new Random();
int i1=r.nextInt(number.length-0) + 0;
if(!ar.contains(i1)){
Toast.makeText(getApplicationContext(), ""+i1, Toast.LENGTH_LONG).show();
ar.add(i1);
}else{
Toast.makeText(getApplicationContext(), "Finished", Toast.LENGTH_LONG).show();
}
但这并没有找到我的方式,它没有重复任何数字,但如果它在第二次点击中得到一个重复的数字然后它是烘烤完成,但我想在整数数组中的每个数字都烘烤后烘烤它,wat应该是我修改过的逻辑吗?
答案 0 :(得分:2)
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);
答案 1 :(得分:2)
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
}