我做了很多關於這個主題的搜索,但我找不到任何可用於我的問題:我正在基於一個整數數組在Java中進行一個簡單的內存遊戲。我希望數組只包含重複的條目並且沒有唯一的條目。不幸的是,這裏的大部分問題都涉及避免或刪除重複的條目,但是如何執行它們呢?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;
}
領域[]是類型字段(數組基本上只有一個成員(INT ID)。
恩,怎麼會進入數組?如果它不在數組中,那麼它不能被添加,因爲它不是重複的。我認爲你需要更好地澄清你的目標。 –
這是什麼代碼...你的嘗試?它似乎並沒有阻止將新的Field實例放入具有不同值的數組中。事實上,它似乎試圖爲數組中的每個項目提供不同的值!你做了很多搜索,但是你是否試圖思考? –
我的想法是生成一個隨機數,並將其放入數組的第一個索引以及數組的另一個隨機索引中,該索引是空的。之後,下一個索引被選中並生成另一個隨機數。這個隨機數被放入數組的第二個索引(如果爲空),並放入另一個隨機索引(如果爲空)等等。我預計數組最後只能填充重複值。我的想法有問題嗎? – birdog