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();
            }

しかし、これは私のやり方に来ませんでした。数字は繰り返されませんが、2回目のクリックで重複した数字が得られた場合はトーストが終了しますが、整数配列からのすべての数字がトーストされた後にトーストしたいです。修正されたロジック?

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 に答える