私はこのテーマについて多くの検索を行いましたが、私の問題に役立つものは何も見つかりませんでした。整数配列に基づいてJavaで単純なメモリゲームを作成しています。配列に重複するエントリのみを含め、一意のエントリを含めないようにします。残念ながら、ここでの質問のほとんどは、重複するエントリの回避または削除に関するものですが、それらを強制することについてはどうでしょうか。
これまでの私のコードは次のようになっています。
public Field[] getField(){
Random r = new Random();
int pool = 16;
ArrayList<Integer> used = new ArrayList<Integer>();
int rand = r.nextInt(pool);
System.out.println("First random: " + rand);
for(int i = 0; i < fields.length; i++){
System.out.println("ITERATION " + i + " STARTED");
while(used.contains(rand)){
System.out.println(rand + " is used, recalculating...");
rand = r.nextInt(pool);
System.out.println("New random is " + rand);
}
fields[i] = new Field(rand);
System.out.println(rand + " added in Field " + i);
int tmp = r.nextInt(fields.length - 1);
System.out.println("First tmp calculated: " + tmp);
while(fields[tmp] != null && i <= fields.length / 2){
tmp = r.nextInt(fields.length - 1);
System.out.println("Field " + tmp + " is used, looking for another...");
}
fields[tmp] = new Field(rand);
System.out.println(rand + " added in temp Field " + tmp);
used.add(rand);
System.out.println("ITERATION " + i + " ENDED");
System.out.println();
}
return fields;
}
fields []は、Field型の配列です(基本的に、メンバーは1つだけです(int id)。