3 回答

TA貢獻1797條經驗 獲得超6個贊
ArrayList<String>您可以將 聲明并初始化為全局變量,然后在獲取隨機變量后將其從數組中刪除,而不是每次生成新問題時都檢索行
private ArrayList<String> tableContent;
Random rand = new
public YourClass yourConstructor () { // or MainActivity initializer if android studio
mydManager.openReadable();
tableContent = mydManager.retrieveRows();
}
public String getQuestion() {
int size = tableContent.size();
int rand_int = rand.nextInt(size);
String a = tableContent.get(rand_int);
//remove the element from arraylist
tableContent.remove(a);
String[] myarray = a.split("\n");
String Rquestion = (myarray[1]);
question = findViewById(R.id.question);
question.setText(Rquestion);
return a;
}
這應該可以解決問題

TA貢獻1853條經驗 獲得超9個贊
好的,隨著更多問題被添加到您的數據庫中,您無法僅從數據庫中檢索問題列表一次。您必須在每次單擊按鈕時執行此操作。所以現在你有兩個選擇:
維護已使用的索引/數字的列表:當您生成下一個隨機數時,它應該與這些索引/數字不同。如果相同則重新生成。此外,為此,添加到數據庫或從數據庫檢索的問題不應更改先前問題的順序。
從數組列表中刪除使用過的問題(如果不在其他地方使用則不需要)和數據庫

TA貢獻1744條經驗 獲得超4個贊
全局數組列表聲明
ArrayList<Integer> integers; // as globle
//創建時
integers = new ArrayList<>();
public int gen(int i) {
int alldata = i;
Random rand = new Random();
int rand_int = rand.nextInt(i);
if (integers.size() == 0) {
integers.add(rand_int);
}else{
if (integers.contains(rand_int)) {
return gen(i);
} else {
integers.add(rand_int);
}
}
return rand_int;
}
int size = tableContent.size();
String a = tableContent.get(gen(size));
上面的代碼每次都會生成新的整數
添加回答
舉報