所以在这里我试图从我的表中得到一个随机的问题,其中列“stat”为0,无论如何这里的问题是它不会接受随机int所以c.moveToPosition(rnd)会出错或者我现在不这样做会导致应用程序粉碎。这是代码请帮助!
public String[] databasetostring () {
String dbstring = "";
String optstring = "";
SQLiteDatabase db = getWritableDatabase();
String query = "SELECT * FROM " + TABLE_QUESTIONS + " WHERE 1";
Cursor c = db.rawQuery(query, null);
c.moveToFirst();
while (!c.isAfterLast()){
if ( c.getInt(c.getColumnIndex("stat")) != 1 ){
dbstring += c.getString(c.getColumnIndex("question"));
dbstring += "\n";
optstring += c.getString(c.getColumnIndex("answer"));
optstring += "\n";
}
int rnd = new Random().nextInt(c.getCount());
c.moveToPosition(rnd);
}
db.close();
c.close();
return new String[] {dbstring, optstring};
}
这是logcat,它一直进入那个循环!
07-29 22:40:07.352 10939-10949/com.example.bibiwars.digital D/dalvikvm GC_FOR_ALLOC freed 0K, 23% free 6057K/7824K, paused 20ms, total 20ms
07-29 22:40:07.352 10939-10939/com.example.bibiwars.digital D/dalvikvm GC_FOR_ALLOC freed 2061K, 49% free 3995K/7824K, paused 0ms, total 0ms
07-29 22:40:07.362 10939-10939/com.example.bibiwars.digital D/dalvikvm﹕ GC_FOR_ALLOC freed <1K, 39% free 4820K/7824K, paused 10ms, total 10ms
07-29 22:40:07.362 10939-10939/com.example.bibiwars.digital D/dalvikvm﹕ GC_FOR_ALLOC freed 824K, 34% free 5232K/7824K, paused 0ms, total 0ms
答案 0 :(得分:0)
我建议你有点粗暴地实施这些东西 尝试将所有问题作为字符串放入(例如)ques []和opt []中的相应选项。然后,获得问题[]的大小,该大小对应于您拥有的问题总数。现在,选择一个随机数b / w [0,count)并在你的应用程序中使用它 你现在可以使用相同大小的bool flag []保留一个问题问题的标志 希望这会有所帮助。