0

我有一个 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();
            }

但这不是我的方式,它不会重复任何数字,但如果它在第二次点击中得到重复的数字,那么它正在烘烤完成,但我想在整数数组中的每个数字都被烘烤后烘烤它,应该是我的修改逻辑?

4

2 回答 2

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);
于 2012-06-08T17:29:58.810 回答
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
    }
于 2012-06-08T17:35:54.640 回答