我正在尝试使用this post中解释的方法从我的数据库中获得的双打列表中计算平均值,但它不起作用。应用程序崩溃可能是因为溢出。
private double getAverage() {
Cursor cursor = db.getMarks(subject);
List<Double> list = new ArrayList<Double>();
cursor.moveToFirst();
while(!cursor.isAfterLast()) {
list.add(cursor.getDouble(cursor.getColumnIndex(DBAdapter.KEY_VALUE)));
}
if (list.isEmpty())
return 0.0;
long sum = 0;
int n = list.size();
for (int i = 0; i < n; i++)
sum += list.get(i);
return ((double) sum) / n;
}
是否有方法可以获得用于计算平均值的工作代码? 提前致谢
答案 0 :(得分:0)
你得到的例外是什么? 如果它确实溢出,那就试试吧:
private double getAverage() {
Cursor cursor = db.getMarks(subject);
int count = cursor.getCount();
double sum = 0.0;
if(count == 0){
cursor.close();
return sum;
}
cursor.moveToFirst();
while(!cursor.isAfterLast()) {
sum += cursor.getDouble(cursor.getColumnIndex(DBAdapter.KEY_VALUE));
cursor.moveToNext();
}
cursor.close();
return sum / count;
}